微服务周边中间件和方案汇总

前言

毕业后的第一份工作今天就正式结束了,学生时代结束后的第一份正式工作整体上还是交了一份良好的答卷,3年中不管是技术体系的建立,还是职业素养的形成都很感激我们架构师也就是我师父。同时也很感谢一直帮助我的部门经理和公司的小伙伴们~

最近一直在面试,准备把工作3年的JavaWeb技术栈相关的知识体系从Xmind里输出到博客中,一方面是做一次技术总结和梳理,另一方面希望能够帮助到有需要的人,当然了还有个重要的原因是博客已经荒芜好久需要好好打理一下😋。

这篇文章《微服务周边中间件和方案汇总》,属于目录结构总纲,整体列出了微服务这一分布式架构设计中各个技术方面(服务治理、消息中间件、分布式事务、分布式缓存、分布式存储等等)的可用中间件技术选型,后续文章会分别针对每一个技术方面的中间件的技术进行对比,同时也会针对不同的业务场景给出各个技术选型的组合建议。

因为个人水平有限,如果有理解错误的,希望网络中的小伙伴们帮忙指出哦~

这是一个系列文章的开头,希望自己能坚持下去👨‍💻~

微服务周边中间件和方案汇总

配置中心

  • SpringCloud Config(Spring) Spring Cloud 生态组件,可以和Spring Cloud体系无缝整合。
  • Apollo(CtripCorp) 携程开源的配置管理中心,具备规范的权限、流程治理等特性。
  • Nacos(Alibaba) 阿里开源的配置中心,也可以做DNS和RPC的服务发现。
  • Disconf(Baidu) 百度开源的配置管理中心,目前已经不维护了

注册中心

  • Eureka(Netflix)
  • Consul(HashiCorp)
  • Nacos(Alibaba)
  • CoreDNS(Linux Foundation)
  • Zookeeper(Apache)

服务网关

  • SpringCloud Gateway(Spring)
  • Zuul1(Netflix)
  • Zuul2(Netflix)
  • Nginx+Lua nginx 性能虽强,但功能有限。我们一般只用来做负载均衡和反向代理。后面还是 - gateway 来实现做身份验证、鉴权、限流、接口访问日志等功能。
  • Kong 基于OpenResty的 API 网关服务和网关服务管理层.

服务调用

  • Feign(OpenFeign)

服务熔断

  • Hystrix(Netflix)
  • Sentinel(Alibaba)

链路监控

  • SpringCloud Sleuth(Spring) + Zipkin(Twitter)
  • SkyWalking(中国 吴晟、Apache)
  • Pinpoint(韩国 Woonduk Kang)

客户端负载均衡

  • Ribbon(Netflix)

消息中间件

  • ActiveMQ
  • RocketMQ(Alibaba、Apache)
  • RabbitMQ(Vmware SpringSource、Pivotal)
  • Kafka(Linkedin Jay Kreps 、Apache)
  • Redis(Vmware Salvatore Sanfilippo、Pivotal)

分布式任务调度

  • XXL-Job(DianpingCorp 徐雪里)
  • Elastic-Job(DangDangCorp)
  • Staturn(VipShopCorp)
  • SchedulerX2.0(Alibaba)

分布式事务

  • Seata(Alibaba)
  • TX-LCN(CodingAPI 1991wangliang)
  • JDTX(京东数科)

分布式缓存

  • Redis(Vmware Salvatore Sanfilippo、Pivotal)
  • Memcached(LiveJournal Brad Fitzpatrick)
  • EhCache(Sourceforge) JVM级

分布式数据库中间件

  • ShardingSphere(DangDangCorp、Apache)
  • Mycat(Alibaba)

对象存储服务OSS

  • FastDFS
  • MinIO(MinioCorp AnandBabuPeriasamy)
  • MongoDB GridFS
  • 公有云OSS(AliYun、QCloud、HuaWeiYun、AmazonS3)

分布式ID

常见方案

  • UUID
  • 数据自增ID SEQUENCE_ID
  • 数据库多主模式 不同步长
  • 号段模式
  • Redis、Zookeeper等借助中间存储做唯一ID方案
  • 雪花算法SnowFlake(Twitter)

开源中间件

  • uid-generator(Baidu)
  • Leaf(MeiTuanCorp)
  • Tinyid(DiDiCorp)

分布式日志归集

  • ELK(Elastic)
    • ElasticSearch 日志存储、搜索和分析
    • Logstash 日志的采集、转换和传输
    • Kibana 日志可视化
  • Filebeat(Elastic) 轻量级日志采集器,采集、转发和汇总
  • Flume(Cloudera) 日志的采集、转换和传输
  • Kafka(Linkedin、Apache) 高吞吐量低延迟消息队列,用于日志中转的中间层。日志采集器将消息传输给Kafka、分析工具(Spark、Storm等)从Kafka消费日志消息