SpringCloud架构知识点梳理

举报
赵KK日常技术记录 发表于 2023/06/30 10:36:52 2023/06/30
【摘要】 下个项目可能选型SpringCloud+VUE,做分布式系统,以前做过Demo和小项目,幸好是前后端分离,要不VUE我专门花一周学,就是没学会。          个人结合资料网站,SpringCloud中文网,以及《Spring Cloud与Docker微服务架构实战》简单整理,周末抽时间自己搭demo测试,自己家里按了个VMware,但是BIOS没修改,昨天也就作罢了,后面的知识点就笼统...

下个项目可能选型SpringCloud+VUE,做分布式系统,以前做过Demo和小项目,幸好是前后端分离,要不VUE我专门花一周学,就是没学会。

          个人结合资料网站,SpringCloud中文网,以及《Spring Cloud与Docker微服务架构实战》简单整理,周末抽时间自己搭demo测试,自己家里按了个VMware,但是BIOS没修改,昨天也就作罢了,后面的知识点就笼统的看了一眼。

            SpringCloud基础集成项目有25种之多,实在是不可能面面俱到,只挑了要用的看了一下。

            首先整理下微服务架构,微服务,SOA分布式架构,RPC,RESTFUL等知识点去查询。以前应用的Dubbo+SpringBoot+Nginx+redis等应对,现在用SpringCloud+SpringBoot+自身项目完成。、

            说起来以前为了查询SpringCloud与Dubbo的区别,还喷了一个满嘴脏话的CSDN博主,反正误人子弟就是了,后跟大佬们求证,才知道官网,和实践的重要性,其本质区别在于Dubbo是RPC协议,SpringCloud是REST风格

 1.Eureka:注册中心。个人理解,类比于Zookeeper,用于服务的注册与发现,但现在GitHub上声明了关于eureka 2.0的现有开源工作已经停止。作为2.x分支上现有工作存储库的一部分发布的代码库和工件被视为使用,风险自负。听大群说都在用Consul,用Consul就得学Docker...

Eureka的自我保护机制。节点平等,不立即注销任何服务。

其中Zookeeper遵循CP原则,Eureka遵循AP原则。

图片  图片

2.Ribbon:负载均衡。类比于Nginx,7种算法外可自定义,一个@LoadBalanced即可解决,不同于Nginx的繁琐配置,

图片

3.Feign:针对接口编程+声明式注解得负载,可添加日志了解具体请求,

图片

4.Hystrix:断路器,处理延迟+容错,响应合理异常。默认5秒20次调用失败启动,关键注解@HystrixCommand

图片

图片

隔离策略:线程隔离(默认)

                 信号量隔离

5.Zuul:路由网关,用于服务接入,转发.代理+路由+过滤

图片

图片

图片

6.Config:配置中心,需要搭配GitHub或Gitlab,

图片

Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring EnvironmentPropertySource抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用。随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具。可以轻松添加替代实现,并使用Spring配置将其插入。

7.Sleuth:实现微服务追踪。搭配ELK,ZipKin,分析系统瓶颈,解决系统问题。

图片

标题:构建弹性可扩展的微服务架构:深入理解Spring Cloud

摘要:随着互联网应用的复杂度不断增加,微服务架构成为一种流行的架构模式,帮助企业构建可维护、可扩展的系统。本文将深入探讨Spring Cloud作为一种广泛使用的微服务架构解决方案,介绍其核心组件及其在构建弹性可扩展的微服务架构中的角色和功能。

**1. 引言**

随着云计算和虚拟化技术的快速发展,微服务架构在构建现代化应用方面的优势越来越明显。而Spring Cloud作为一种开源的微服务框架,提供了一整套解决方案来帮助开发者构建和管理微服务架构。本文主要围绕Spring Cloud来讨论如何构建弹性可扩展的微服务架构。

**2. 微服务架构简介**

微服务架构是一种将整个应用拆分成多个小型、自治、松耦合的服务的架构模式。每个微服务都具有独立的功能和数据库,通过轻量级通信机制(如HTTP、消息队列等)进行相互通信。这种架构提供了高度的灵活性和可伸缩性,并支持敏捷开发和部署。

**3. Spring Cloud简介**

Spring Cloud是Spring家族中的一个子项目,它提供了一整套针对微服务架构的开箱即用解决方案。Spring Cloud基于Spring Boot,结合了多个开源项目,提供了配置管理、服务发现、负载均衡、熔断、消息总线等功能,极大地简化了微服务系统的开发和运维工作。

**4. Spring Cloud核心组件**

4.1 服务注册与发现(Eureka):Eureka是Spring Cloud中的核心组件之一,它为微服务架构提供了服务注册和发现的能力。服务注册中心负责记录所有可用服务的位置信息,服务提供者将自己注册到注册中心,而服务消费者通过查询注册中心来找到可用的服务。

4.2 服务调用(Feign和Ribbon):在微服务架构中,服务间的通信变得至关重要。Spring Cloud通过Feign和Ribbon来简化服务之间的调用。Feign是一个声明式的HTTP客户端,通过简单的注解配置,即可实现服务间的远程调用。而Ribbon则提供了客户端负载均衡的功能,可以根据负载情况自动选择合适的服务实例。

4.3 服务容错保护(Hystrix):在复杂的分布式环境中,服务间的故障是不可避免的。Hystrix作为一种容错保护机制,可以防止故障在整个系统中传播。它通过断路器模式来隔离和控制服务的调用,当某个服务失败或响应时间过长时,Hystrix会熔断该服务的调用,避免资源的浪费和服务的积压。

4.4 配置管理(Config):Spring Cloud Config提供了集中式的外部配置管理,可以将应用的配置信息存储在一个独立的Git仓库中。通过配置服务端和客户端,应用可以在运行时动态加载配置,避免了重新部署和重启应用的麻烦。

4.5 消息总线(Bus):微服务系统中经常会出现需要全

局广播的需求,以便实现配置的动态更新或进行集中的管理。Spring Cloud Bus提供了一种简单的方式来实现消息总线,通过使用消息代理(如RabbitMQ或Kafka)作为通信媒介,可以将配置的变更或其他事件广播到整个微服务系统中。

4.6 API网关(Zuul):在微服务架构中,通常会存在大量的微服务和相应的API端点。为了简化客户端与服务之间的调用,以及提供安全性和性能优化的能力,引入API网关是很有帮助的。Spring Cloud Zuul作为一种动态路由和过滤器的解决方案,可以将外部请求路由到相应的微服务,并提供鉴权、缓存、限流等功能。

**5. 构建弹性可扩展的微服务架构**

5.1 弹性设计:在微服务架构中,弹性是非常重要的,它可以帮助系统更好地应对负载波动和故障情况。通过使用Spring Cloud的熔断和限流机制,可以实现服务的自适应和扩展,避免单个服务的失败引起整个系统的崩溃。

5.2 高可用性:高可用性是构建可靠微服务架构的关键要素。通过使用Spring Cloud的服务注册与发现组件(如Eureka)和负载均衡组件(如Ribbon),可以实现服务的高可用部署和请求的负载均衡,保证系统的稳定性和可靠性。

5.3 监控与日志:在构建微服务架构时,监控和日志是必不可少的组成部分。Spring Cloud提供了丰富的监控和跟踪功能,可以通过集成Spring Boot Actuator、Zipkin等组件来实现对微服务的监控和跟踪。同时,使用ELK(Elasticsearch、Logstash、Kibana)等日志解决方案可以集中管理和分析微服务的日志信息。

5.4 安全性:在微服务架构中,保护服务和数据的安全性至关重要。Spring Cloud提供了多种安全机制,如基于OAuth2的认证和授权、服务间的安全通信等。通过合理配置安全机制,可以确保微服务系统的安全性和防护能力。

5.5 自动化部署与持续集成:为了满足快速迭代和频繁发布的需求,采用自动化部署和持续集成是必要的。利用Spring Boot提供的自动化配置和Spring Cloud提供的集成解决方案,可以实现自动化部署和持续集成的流程,提高开发和部署的效率。

**6. 结论**

Spring Cloud作为一种流行的微服务架构解决方案,为开发者提供了一整套的功能和工具来构建弹性可扩展的微服务架构。通过合理应用Spring Cloud的核心组件,可以实现服务注册与发现、服务调用、熔断保护、配置管理、消息总线等关键能力,从而构建出高可用性、高弹性、可扩展的分布式系统。

然而,构建微服务架构并不是一蹴而就的。在实际的应用中,还需要根据具体需求和业务场景进行合理的技术选型和架构设计。同时,在开发和部署过程中需要注意容器化、监控与日志、安全性等方面的考虑。只有将最佳实践和技术工具结合起来,才能够构建出稳定、可靠、高效的弹性可扩展的微服务架构。

总之,Spring Cloud作为一种成熟且广泛使用的微服务架构解决方案,通过提供一系列功能和工具,简化了微服务系统的开发、部署和管理工作。在构建弹性可扩展的微服务架构时,我们应该深入理解Spring Cloud的核心组件,如Eureka、Feign、Ribbon、Hystrix等,并合理运用这些组件来满足系统的需求。同时,还需要关注弹性设计、高可用性、监控与日志、安全性等方面的考虑,以构建稳定、可靠、高效的微服务架构。

随着互联网应用的不断发展和业务的不断演进,微服务架构将成为构建大规模、复杂系统的重要手段。深入了解和熟练应用Spring Cloud,将帮助开发者在微服务架构的道路上更加游刃有余,构建出适应业务需求的弹性可扩展的系统。

参考文献:
1. Spring Cloud官方文档:https://spring.io/projects/spring-cloud
2. M. Fisher, B. Jones, R. A. Laszewski, "Cloud Native DevOps with Kubernetes," O'Reilly Media, 2019.
3. S. Newman, "Building Microservices: Designing Fine-Grained Systems," O'Reilly Media, 2015.

OK,整理结束,简单记下相关知识,笔记已整理,相应的还引出了Docker,ELK,ZipKin等新技术...好累!!!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。