springcloud-alibaba微服务搭建
springcloud-alibaba组件:
nacos:注册中心、配置中心。关于注册中心可以对比springcloud-Netflix的注册中心Eureka和dubbo的zookeeper,看看它们之间的区别,关于CAP的一些理解;而配置中心是取代了springcloud config。(需要下载压缩包)
feign:远程服务调用。feign集成了ribbon可以实现负载均衡,feign面向接口,使用的是restful风格加http协议,不同于dubbo的RPC的远程调用的tcp协议,相对于dubbo来说性能要低一点。
sentinel:是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。应用于springcloud-alibaba,区别于springcloud-Netflix的Hystrix(熔断器)。(需要下载jar包)
springcloud-gateway:springcloud-alibaba没有自己的网关组件,集成的是springcloud的gateway。
slueth:分布式链路跟踪。为服务之间调用提供链路追踪,通过 Sleuth 可以很清楚的了解到一个服务请求经过了哪些服务,每个服务处理花费了多长。从而让我们可以很方便的理清各微服务间的调用关系。
zipkin:Twitter 的一个开源项目,它基于 Google Dapper 实现,它致力于收集服务的定时数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现。 我们可以使用它来收集各个服务器上请求链路的跟踪数据,并通过它提供的 REST API 接口来辅助我们查询跟踪数据以实现对分布式系统的监控程序,从而及时地发现系统中出现的延迟升高问题并找出系统性能瓶颈的根源。(需要下载jar包)
RocketMQ:消息中间件,实现应用的削峰平谷、高并发、高流量。可对比ActiveMQ、RabbitMQ、kafka之间的区别。RocketMQ的消息类型有普通消息、顺序消息、事务消息。
seata:分布式事务解决方案有:1.全局事务 2.消息中间件 3.最大努力通知 4. TCC。不同于本地事务,依赖于数据库本身的事务来解决此问题,seata是在架构层面,将seata以jar包的形式嵌入到服务中心,无代码侵入。通过全局事务的思想将单个数据库的操作以日志的形式存入undo-log表中,如果中间某个操作出现问题不成功,就会从undo-log表中查询相关的记录生成sql语句操作数据库来实现回滚。
微服务搭建思路:
1. 添加依赖
2. 编写配置文件
3. 添加注解
demo的github地址:https://github.com/white66/springcloud-alibaba-demo.git
时光静好,与君语;细水长流,与君同;繁华落尽,与君老!