目前微服务早已火遍大江南北,对于开发来说,我们时刻关注着技术的迭代更新,而项目采用什么技术栈选型落地是开发、产品都需要关注的事情,该篇博客主要分享一些目前普遍公司都在用的技术栈,快来分享一下你当前所在用的技术吧。
一、微服务治理中心框架
Apache Dubbo分布式RPC框架
Apache Dubbo是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。Dubbo 被设计为高度可扩展,用户可以方便的实现流量拦截、选址的各种定制逻辑。
▼Spring Cloud Alibaba分布式应用服务开发一站式解决方案
Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。此外,阿里云同时还提供了 Spring Cloud Alibaba 企业版 微服务解决方案,包括无侵入服务治理(全链路灰度,无损上下线,离群实例摘除等),企业级 Nacos 注册配置中心和企业级云原生网关等众多产品。
Spring Cloud Alibaba与Spring Cloud的关系

在 Spring Cloud 众多的实现方案中,Spring Cloud Alibaba 凭借其支持组件最多,方案最完善,在 Spring Cloud 生态家族中扮演了重要角色。Spring Cloud Alibaba 与 Spring Cloud 生态其他方案之间对比图如下:

主要功能
Sentinel
Nacos
阿里巴巴开源产品,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
RocketMQ
Apache RocketMQ™ 基于 Java 的高性能、高吞吐量的分布式消息和流计算平台。
Dubbo
Apache Dubbo™ 是一款高性能 Java RPC 框架。
Seata
阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
Alibaba Cloud OSS
阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
Alibaba Cloud SchedulerX
阿里中间件团队开发的一款分布式任务调度产品,支持周期性的任务与固定时间点触发任务。
Alibaba Cloud SMS
覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。
Spring Cloud微服务开发和治理框架
Spring Cloud为开发者提供了工具来快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话,集群状态)。分布式系统的协调导致了样板模式,使用 Spring Cloud 开发人员可以快速建立实现这些模式的服务和应用程序
Spring Cloud架构图

▼Spring Cloud Tencent一站式微服务解决方案
Spring Cloud Tencent是腾讯开源的一站式微服务解决方案。Spring Cloud Tencent 实现了 Spring Cloud 标准微服务 SPI,开发者可以基于 Spring Cloud Tencent 快速开发 Spring Cloud 微服务架构应用。Spring Cloud Tencent 的核心依托腾讯开源的一站式服务发现与治理平台 Polarismesh ,实现各种分布式微服务场景。
Spring Cloud Tencent架构图

▼ Apache ServiceComb一站式开源微服务解决方案
Apache ServiceComb架构图
Apache ServiceComb 提供了融合开源生态的一站式微服务开源解决方案,致力于帮助企业、用户和开发者将应用轻松微服务化上云,实现对微服务应用的高效运维管理。

二、持续集成CI/CD
| CI/CD | 配置中心 |
|---|---|
| Jenkins、Docker Hub、Maven、Nexus、CI/CD | Apollo |
三、微服务组件
阿里系
| 选项 | 组件 |
|---|---|
| 服务调用方式 | OpenFeign |
| 服务注册 | Nacos Discovery |
| API网关 | Spring Cloud Gateway |
| 熔断限流 | Sentinel |
| 配置中心 | Nacos Config |
| 消息队列 | RocketMQ |
| 分布式事务 | Seata |
| 分布式服务追踪 | Spring Cloud Sleuth |
| 监控 | Spring Cloud Admin |
| 短信服务 | Alibaba Cloud SMS |
Spring Cloud&Dubbo系
| 选项 | 组件 |
|---|---|
| 服务调用方式 | feign |
| 服务注册 | Eurake、Zookeeper |
| API网关 | Spring Cloud Gateway、Zuul |
| 熔断限流 | Hystrix |
| 配置中心 | Apollo、Spring Cloud Config |
| 分布式服务追踪 | Spring Cloud Sleuth |
| 监控 | Spring Cloud Admin |
| 消息总线 | Spring Cloud Bus |
四、容器
| 选项 | 首选 |
|---|---|
| 容器 | Docker |
| 容器编排管理 | kubernetes(首选推荐)、Docker Swarm、Apache Mesos |
Kubernetes
Kubernetes也称为 K8s,是一个开源系统,用于自动部署、扩展和管理容器化应用程序,Kubernetes是一个可移植、可扩展的开源平台,用于管理容器化工作负载和服务,有助于声明式配置和自动化。它拥有庞大且快速发展的生态系统。Kubernetes 服务、支持和工具广泛可用。Kubernetes 结合了Google 超过 15 年大规模运行生产工作负载的经验以及来自社区的最佳创意和实践。
Docker Swarm
Docker Swarm, Docker的原生集群系统。Docker Swarm 模式内置于 Docker 引擎中,用于本地管理称为 swarm 的Docker引擎集群。使用 Docker CLI 创建 swarm,将应用程序服务部署到 swarm,并管理 swarm 行为。这是 Docker 的第一个容器编排项目。
Kebernetes与Docker Swarm对比

五. 应用服务
| 选项 | 首选 | 备选 |
|---|---|---|
| 消息队列 | 阿里云RabbitMQ服务 | |
| 广播式消息队列 | 阿里云Kafka服务 | |
| 关系型数据库 | 阿里云RDS MySQL服务 | |
| 分布式关系型数据库服务 | Sharding-JDBC | |
| 非关系型数据库 | 阿里云Mongo服务 | |
| 缓存 | 阿里云Redis服务 | |
| 文件服务器 | 阿里云OSS服务 | |
| 短信 | 阿里云短信服务 | |
| 负载均衡 | 阿里云SLB | Nginx |
| 分布式定时任务框架 | XXL-Job | Elastic-Job |
| 日志框架 | ELK | |
| 数据访问 | Mybatis Plus |
六、测试
| 选项 | 首选 |
|---|---|
| UI | Seleniu(少) |
| 单元测试 | JUnit(中) |
| 接口和性能测试 | JMeter(多) |
七、总结
该篇文章主要是介绍当前比较流行的一些微服务技术栈以及常用的应用服务,仅仅是个人的一些看法,后面还会持续更新该篇文章内容,目前你公司常用的微服务架构有哪些呢?
小编整理了2GB程序员相关资料,关注公众号“程序员Style”回复“程序员”免费领取!若有其他问题,欢迎给小编留言交流。
往期推荐