文章目录
软件架构发展史
1、单体架构
部署形式:一个应用、一个DB、一个WebServer
优点:快速、灵活、技术要求低
缺点:升级迭代难、业务支撑能力弱、部署扩展性差
2、SOA
部署形式:多个分布式应用集群部署、统一DB/按业务拆分DB、多个WebServer
优点:业务模块内部高内聚,业务模块之间低耦合、业务模块目标清晰、模块升级服务独立、针对业务洪峰可通过水平扩展来支撑
缺点:ESB(企业服务总线)职责过多(职责:统一服务管理、协议转换、消息转换、消息路由服务监控等)
3、微服务(比SOA组件化和服务化更彻底)
部署形式:多个分布式应用集群部署、多个服务模块DB、多个WebServer
优点:在SOA优点之上增加开发语言和数据库类型的多样化支持、服务治理职责更为单一
缺点:事务问题成为必须要解决的问题、系统复杂度增高
与SOA区别:去掉ESB的大一统职责组件,将大一统职责组件进行拆分,组件职责进一步细化。
springcloud组件
Eureka
负责服务的注册与发现,很好将各服务连接起来。通过feign
简化接口调用方式。Hystrix
负责监控服务之间的调用情况,连续多次失败进行熔断保护。Hystrix dashboard+Turbine
负责监控 Hystrix的熔断情况,并给予图形化的展示Spring Cloud Config
提供了统一的配置中心服务- 当配置文件发生变化的时候,
Spring Cloud Bus
负责通知各服务去获取最新的配置信息 - 所有对外的请求和服务,我们都通过
Spring Cloud Gateway
来进行转发,起到API网关的作用 - 监控我们使用
Sleuth+Zipkin+springAdmin
将所有的请求数据及路径记录下来
Eureka(服务中心)
Eureka是Netflix开源的一款提供服务注册和发现的产品。完成服务注册、负载均衡和故障转移的功能。
依赖spring-cloud-starter-eureka
同质化产品:Consul、Feature、zookeeper、etcd等
Feign(HTTP客户端)
Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。
依赖spring-cloud-starter-feign
Hystrix(服务熔断/故障隔离)
避免一个服务故障导致调用该服务的其它N个服务等待引起级联故障而造成服务雪崩(服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。)
针对故障服务Hystrix会间隔时间进行检查,如果服务恢复将继续提供服务。
Hystrix-dashboard+Turbine (监控工具)
Hystrix-dashboard是针对Hystrix进行实时监控的管理工具,能展示Hystrix Command的请求响应时间, 请求成功率等数据。添加Turbine工具则能同时展示多个服务信息。
Spring Cloud Config (配置中心)
将服务的配置信息服务化,通过Config Client连接到Config Server进行获取,通过手动Refresh可完成在服务的运行期间重新加载配置更新。
Spring Cloud Bus(广播指令)
Spring Cloud Bus通过轻量消息代理连接各个分布的服务节点。可通过它广播消息指令到任一服务节点。比如与Spring Cloud Config配合使用自动识别配置变化,可通过该组件通知服务节点自动Refresh完成配置的更新。
Spring Cloud Gateway (服务网关)
基于SpringFramework5和SpringBoot2实现了动态路由、HTTP请求的路由匹配、过滤器可以修改下游HTTP请求和HTTP响应等功能。
同质化产品:Zuul、Linkerd等
Spring Cloud Sleuth+Zipkin+springAdmin (消息链路跟踪)
随着服务的越来越多,对调用链的分析会越来越复杂。系统的架构改进需要监控服务和服务之间通讯的各项指标达成情况如(服务间调用关系、调用链、各服务消耗时间等)。Zipkin是Twitter的一个开源项目,允许开发者收集 Twitter 各个服务上的监控数据,并提供查询接口。
观点仅代表自己,期待你的留言。