1、单体架构
部署形式:一个应用、一个DB、一个WebServer
优点:快速、灵活、技术要求低
缺点:升级迭代难、业务支撑能力弱、部署扩展性差
2、SOA
部署形式:多个分布式应用集群部署、统一DB/按业务拆分DB、多个WebServer
优点:业务模块内部高内聚,业务模块之间低耦合、业务模块目标清晰、模块升级服务独立、针对业务洪峰可通过水平扩展来支撑
缺点:ESB(企业服务总线)职责过多(职责:统一服务管理、协议转换、消息转换、消息路由服务监控等)
3、微服务(比SOA组件化和服务化更彻底)
部署形式:多个分布式应用集群部署、多个服务模块DB、多个WebServer
优点:在SOA优点之上增加开发语言和数据库类型的多样化支持、服务治理职责更为单一
缺点:事务问题成为必须要解决的问题、系统复杂度增高
与SOA区别:去掉ESB的大一统职责组件,将大一统职责组件进行拆分,组件职责进一步细化。
Eureka Hystrix Hystrix dashboard+Turbine Spring Cloud Config Spring Cloud Bus Zuul Sleuth+Zipkin+springAdmin
Eureka是Netflix开源的一款提供服务注册和发现的产品。完成服务注册、负载均衡和故障转移的功能。
避免一个服务故障导致调用该服务的其它N个服务等待引起级联故障而造成服务雪崩(服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。)
针对故障服务Hystrix会间隔时间进行检查,如果服务恢复将继续提供服务。
Hystrix-dashboard是针对Hystrix进行实时监控的管理工具,能展示Hystrix Command的请求响应时间, 请求成功率等数据。添加Turbine工具则能同时展示多个服务信息。
将服务的配置信息服务化,通过Config Client连接到Config Server进行获取,通过手动Refresh可完成在服务的运行期间重新加载配置更新。
Spring Cloud Bus通过轻量消息代理连接各个分布的服务节点。可通过它广播消息指令到任一服务节点。比如与Spring Cloud Config配合使用自动识别配置变化,可通过该组件通知服务节点自动Refresh完成配置的更新。
Zuul是Netflix出品的一个基于JVM路由和服务端的负载均衡器。提供对服务节点动态路由、监控、弹性、安全等服务。
随着服务的越来越多,对调用链的分析会越来越复杂。系统的架构改进需要监控服务和服务之间通讯的各项指标达成情况如(服务间调用关系、调用链、各服务消耗时间等)。Zipkin是Twitter的一个开源项目,允许开发者收集 Twitter 各个服务上的监控数据,并提供查询接口。
观点仅代表自己,期待你的留言。