1、单体架构vs微服务架构
单体架构:就是一个war包打天下,包含了应用所有功能;
微服务的核心就是把传统的单机应用,根据业务拆分为一个一个的服务,彻底的解耦,每一个服务提供特定的功能。每个服务都能够单独部署,拥有自己的数据库。
2、微服务架构
微服务架构风格是一种将单个应用程序作为一套小型服务开发的方法,每种应用程序都在自己的进程中运行,并与轻量级机制(HTTP资源API)进行通信。
SOA架构强调的是异构系统之间的通信和解耦合,而微服务架构强调的是系统按照业务边界做细粒度的拆分和部署;
3、微服务技术栈
Spring Cloud是分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶。
常见模式的工具:配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态
一、Spring Cloud Netflix包含的组件:
Eureka,服务注册和发现,一个服务注册中心、服务发现的客户端和一个方便查看所有注册的服务的界面。
Zuul,网关,转发请求,所有客户端请求通过这个网关访问后台的服务。可以使用一定的路由配置来判断某一个URL由哪个服务处理。并从Eureka获取注册的服务来转发请求。
Ribbon,负载均衡;Zuul网关将请求发送给一个服务的时候,如果一个服务启动了多个实例,就会通过Ribbon来通过一定的负载均衡策略来发送给某一个服务实例。
Feign,服务客户端,服务间相互访问,可以使用RestTemplate,也可以使用Feign客户端,它默认使用Ribbon来实现负载均衡
Hystrix,监控和断路器,只需要在服务接口上添加Hystrix标签,就可以实现对这个接口的监控和断路器功能。
Hystrix Dashboard,监控面板,一个可以监控各服务的界面,可以查看服务调用的耗时等
Turbine,监控聚合,使用Hystrix监控需要打开每一个服务实例的监控信息,而Turbine进行了整合,可以在一个地方统一查看
二、Spring Cloud Alibaba技术栈
同Spring Cloud一样,Spring Cloud Alibaba也是一套微服务解决方案,作为Spring Cloud体系下的新实现,具备了更多功能
Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台
Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务稳定性。
RocketMQ:开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
Duubo:在国内应用非常广泛的一款高性能Java RPC框架
Seata:一个易于使用的高性能微服务分布式事务解决方案
Arthas:开源的Java动态追踪工具,基于字节码增强技术,功能强大
三、Spring Cloud Alibaba版本选择
Spring Cloud Alibaba Version | Sentinel | Nacos | RocketMQ | Dubbo | Seata |
2.2.4.RELEASE | 1.8.0 | 1.4.1 | 4.4.0 | 2.7.8 | 1.3.0 |
2.2.0.RELEASE | 1.7.1 | 1.1.4 | 4.4.0 | 2.7.4.1 | 1.00 |
四、Spring Cloud和Spring Cloud Alibaba对比
对比 | Spring Cloud | Spring Cloud Alibaba |
注册中心 | Eureka | nacos |
分布式配置中心 | SpringCloudConfig | nacos |
网关 | zuul | gateway |
熔断降级 | Hystrix | Sentinel |
消息中间件 | 无 | RocketMQ |
分布式调度服务 | 无 | Alibaba Cloud SchedulerX |
短信平台 | 无 | Alibaba Cloud SMS |
分布式事务解决方案 | 无 | Seata |
Spring Cloud Alibaba是Spring Cloud的子项目,由于Spring Cloud一代Ribbon、Hystrix、Zuul、Eureka等众多组件停止维护。所以从项目的长期维护上来说,alibaba替代Spring Cloud已成为必然趋势。