前言
如果要把一个单体应用变成一个分布式系统,或者构建一个分布式系统需要用到哪些技术呢?下面介绍的框架都是开源的框架。
分布式服务框架
作为分布式系统,首先需要让各系统或服务之前互相通信,必须要有一个分布式服务框架。各个服务可以感知对方在哪里,发送请求,可能通过RPC的方式或HTTP的方式。
最常见的框架是dubbo和spring cloud。
分布式事务
基于TCC、最终一致性、2PC等分布式事务的实现方案和开源技术。
开源方案有:ShardingSphere、seata
分布式锁
基于zookeeper或者redis实现分布式锁
分布式缓存
例如redis、memcache等。
分布式消息系统
例如kafka、rabbitmq、rocketmq。
分布式搜索系统
例如ES。
分布式调度
例如:Elastic-Job
配置中心
例如: Spring config 、Apollo 、nacos
注册中心
例如:Zookeeper、Eureka、Nacos、Consul
全链路追踪
例如: Zipkin、Brave、Dapper、CAT
服务监控
例如: Zabbix、Nagios、Metrics、Spectator
日志收集和分析
FileBeat + Kafka + ELK
服务路由
例如:Zuul
服务熔断器
例如: Hystrix、Envoy
负载均衡
例如: Nginx 、 OpenResty