整理自杨波老师的总结
注册中心
- Eureka
- Consul支持 KV 模型存储和灵活健康检查能力。
服务网关
- Spring Cloud选择 Zuul 是最佳搭配,但异步性能不足(基于 Netty 的异步 Zuul 未推出正式版)。
- 基于 Nginx/OpenResty 的 API 网关 Kong 在 github 上比较火。因为采用 Nginx 内核,Kong 的异步性能较强,基于 lua 的插件比较丰富,从安全到限流熔断都有,还有不少开源的管理界面,能够集中管理 Kong 集群。
服务容错
- Hystrix 在应用端或者框架内埋点,有一定侵入性。
集中式限流容错,对于 Nginx或者 Kong,可以集中在反向代理上做熔断限流,其插件支持灵活的限流容错配置。Zuul 也可以集成 Hystrix 实现网关层集中式限流容错。
配置中心
- Spring Cloud Config 缺失治理能力。
- [推荐]携程的 Apollo 配置中心,具备高可用,配置实时生效(推拉结合),配置审计和版本化,多环境多集群支持等生产级特性。https://github.com/ctripcorp/...
调用链监控
- 点评的 CAT ?还是 incubator-skywalking ?
- zipkin 报表少,依赖分析过于简陋,不支持Metric。
- Pinpoint 比zipkin好一点,通过字节码做埋点,但不支持Metric。
日志监控
- ElasticSearch + kibana + Logstash + Filebeat + Elastalert。不说了。
Metrics 监控
存储依赖于时间序列数据库 (TSDB)。
- OpenTSDB 分布式能力强,但是相对较重。
- prometheus 轻量级,自带告警模块,但是分布式能力不足。
Metrics报表展示用 Grafana,不说了。
队列
- 对于日志等可靠性要求不高的场景,用Kafka。对 Kafka 的监控和治理可以结合 hermes。
- RocketMQ 高性能,分布式能力强。
- RabbitMQ 性能和分布式能力稍弱,中小规模场景可选。
缓存
客户端jedis或redisson,redisson有中文文档 链接描述
- [推荐] 客户端直连模式(简单轻量),用 cachecloud 缓存治理平台。
- 中间层 Proxy 模式,则用 Twitter 的 twemproxy 或 CodisLab 的 codis。
数据访问层
- sharding-jdbc,分库分表逻辑做在客户端 jdbc driver 中,客户端直连数据库简单轻量,建议中小规模场景。
- MyCAT 数据库访问中间层 proxy 模式,但运维成本较高,建议中大规模场景。
任务调度
- [推荐] xxl-job 简单轻量,大部分场景够用。
- elastic-job 功能强大但复杂。
服务安全
开源的很杂乱,没有现成的,只能自研。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。