了解微服务技术栈

        在了解微服务技术栈之前,我们先通过图片去了解微服务技术的类别。

微服务技术体系

了解微服务技术栈_第1张图片

技术栈模块图

了解微服务技术栈_第2张图片

微服务技术对比

了解微服务技术栈_第3张图片

服务框架

        用JAVA技术开发微服务,比较主流的选择有:Spring Cloud 和 Dubbo。

        Spring Cloud是在Spring基础上构建的,它后面有2大公司支撑,Pivotal和Netflix的技术支持。它的核心就是Netflix贡献的源码,目前可以认为是构建 Java 微服务的一个社区标准。

        Dubbo 是阿里多年构建生产级分布式微服务的技术结晶,服务治理能力非常丰富,在国内技术社区具有很大影响力,Dubbo 本质上是一套基于 Java 的 RPC 框架。

此外还有:

        钉钉的Dubbox,Dubbox在Dubbo的基础上拓展了RESTful的接口暴露能力。

        新浪微博的Motan,功能和Dubbo类似,可以认为是一个轻量裁剪版的Dubbo。

        谷歌的gPRC,是谷歌近年新推出的RPC框架,基于protobuf的强契约编程模型,能自动生成各种语言客户端,且保证互操作。

服务网关

        如果采用Spring Cloud体系,则可以选择Zuul网关,Zuul在Netflix经过大规模生产验证,支持灵活的动态过滤器脚本机制。

此外还有:

        Spring Cloud Gateway,Spring Cloud新推出的网关框架;

        基于 Nginx/OpenResty 的 API 网关 Kong,因为采用 Nginx 内核,Kong 的异步性能较强,另外基于 lua 的插件机制比较灵活,社区插件也比较丰富。

服务治理

  • 服务注册和发现:Netflix Eureka,支持跨数据中心,除此之外,还有Consul(天然支持跨数据中心,还支持 KV 模型存储和灵活健康检查能力),Zookeeper等
  • 断路器:Hystrix,Netflix 的Hystrix把熔断、隔离、限流和降级等能力封装成组件,任何依赖调用(数据库,服务,缓存)都可以封装在Hystrix Command之内,封装后自动具备容错能力。除此之外,Netflix的Hystri停更后,SpringCloud家族推荐Resilience4j,另外阿里也推出了Sentinel。
  • 调用端负载均衡:Ribbon
  • REST客户端:Feign
  • 分布式事务:阿里开源的Seata,个人开源 TX-LCN
  • 消息队列:Spring Cloud的Spring Cloud Bus和Spring Cloud Stream,阿里开源的RocketMQ,Linkedin开源的Kafka

配置中心

  • Spring Cloud 自带 Spring Cloud Config
  • 携程开源的Apollo,在携程经过生产级验证,具备高可用,配置实时生效(推拉结合),配置审计和版本化,多环境多集群支持等生产级特性,建议中大规模需要对配置集中进行治理的企业采用。
  • 阿里开源的Nacos,Nacos集注册发现和配置中心于一体。

服务监控

        主要包括日志监控,调用链监控,Metrics 监控,健康检查和告警通知等产品。

        ELK 目前可以认为是日志监控的标配

        调用链监控目前社区主流是点评 CAT,Twitter开源的Zipkin,Naver开源的Pinpoint,还有国内开源的Skywalking等

其他服务

  • 分布式缓存:Redis
  • 分布式数据库访问层:MyCat
  • 任务调度系统:徐雪里开源的 xxl-job,阿里开源的Alibaba Cloud SchedulerX

持续集成

        持续交付流水线(CD Pipeline)是微服务发布重要环节,包括基于Docker的镜像治理、基于Kubernetes的集群资源调度,以及资源治理和发布平台等。

下图为可供参考的流水线模型:

        了解微服务技术栈_第4张图片

总结

        微服务是一个庞大的架构体系,每个企业的具体上下文(业务场景,团队组织,技术架构等)各不相同,所以技术选型存在多种多样,没有最好的技术栈,只有相对较合适的技术栈。而技术栈仅是微服务建设的一小部分工作,产品落地才是建设目的,而且系统落地后还有大量集成、定制、治理、运维和推广等工作。

你可能感兴趣的:(SpringCloud,微服务,java,架构)