[Java微服务架构]1_架构选择

欢迎来到啾啾的博客🐱,一个致力于构建完善的Java程序员知识体系的博客📚,记录学习的点滴,分享工作的思考、实用的技巧,偶尔分享一些杂谈💬。

欢迎评论交流,感谢您的阅读😄。

进行Java微服务架构的时候,Java生态下可以选择的组件有很多,每种框架组合都不一样。

Java微服务架构\]系列将从实战出发,开启Java微服务框架篇,深度学习各组件原理并进行实战。 [\[分布式系统\]1_分布式系统概述与杂谈-CSDN博客](https://blog.csdn.net/mdwsmg/article/details/146335830 "[分布式系统]1_分布式系统概述与杂谈-CSDN博客")提到 分布式系统设计是一个复杂的工程,需要考虑多个方面,包括但不限于服务架构的演进、远程服务调用、事务处理、流量治理、可观测性、数据一致性等等等。 宏观的来说,需要权衡各个方面的CAP,在一致性、可用性、分区容忍性之间选择优先级。 原则上来说,还是低耦合、高内聚、遵从大多架构设计说明的渐进式扩展、最小化复杂度等等。 这里主要探讨分布式架构的一种------微服务架构的选择。 Java程序员们已经见过与使用过很多成熟的演进好的架构方案,如SpringCloud、SpringCloudAlibaba、Dubbo,这些框架在服务通信、请求追踪、服务熔断、负载均衡、API网关、事务处理、流量治理、日志管理、数据一致性等等方面均有着成熟的组件,可以让服务稳定、健壮、自洽、可拓展、可维护、高性能等。 **那么,在设计之初怎么选择服务框架呢?** 尽量选择成熟的框架方案,设计之初不要过度设计,需以业务驱动为核心,通过垂直拆分、弱依赖、服务自治 等原则逐步演进。流行的有Spring Cloud、Spring Cloud Alibaba、Dubbo。 |----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 框架 | 文档 | 简单说明 | | Spring Cloud | [Spring Cloud](https://docs.spring.io/spring-cloud/docs/2021.0.9/reference/html/ "Spring Cloud") | 版本关系:Java8-\>Spring5.3.x-\>SpringBoot2.7.x-\>SpringCloud2021.0.9 | | Spring Cloud Alibaba | [spring-cloud-alibaba/README-zh.md at 2023.x · alibaba/spring-cloud-alibaba · GitHub](https://github.com/alibaba/spring-cloud-alibaba/blob/2023.x/README-zh.md "spring-cloud-alibaba/README-zh.md at 2023.x · alibaba/spring-cloud-alibaba · GitHub") | 版本对应:[版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub](https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E#%E7%BB%84%E4%BB%B6%E7%89%88%E6%9C%AC%E5%85%B3%E7%B3%BB "版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub") 其wiki新地址[Spring Cloud Alibaba官网_基于Springboot的微服务教程-阿里云](https://sca.aliyun.com/ "Spring Cloud Alibaba官网_基于Springboot的微服务教程-阿里云") | | Dubbo | [https://cn.dubbo.apache.org/zh-cn/overview/what/overview/](https://cn.dubbo.apache.org/zh-cn/overview/what/overview/ "https://cn.dubbo.apache.org/zh-cn/overview/what/overview/") | | 简单整理如下: ![](https://i-blog.csdnimg.cn/direct/534666c9fc434925837bf368a894e759.png) ![](https://i-blog.csdnimg.cn/direct/a1eb7b318e204765a8d0c372007f0552.png) ![](https://i-blog.csdnimg.cn/direct/eb1a1c20debe4afda0dde30e66baa134.png) |---------|------------------------|-----------------------------|----------------------------------------------------------------------------------------------------| | 维度 | Spring Cloud | Spring Cloud Alibaba | Dubbo | | 核心协议 | HTTP/REST (Spring MVC) | 支持Dubbo、gRPC、HTTP | Dubbo二进制协议(高性能) | | 服务发现 | Eureka、Consul | Nacos(集成配置中心) | Dubbo 服务发现扩展了多种注册中心组件支持,如 Nacos、Zookeeper、Consul、Redis、kubernetes 等,可以通过配置切换不同实现,同时还支持鉴权、命名空间隔离等配置 | | 配置中心 | Spring Cloud Config | Nacos | 无内置,需集成其他组件 | | 流控熔断与降级 | Hystrix、Resilience4j | Sentinel(更强大,流控、熔断和系统自适应保护) | Dubbo内置熔断(较基础) | | 分布式事务 | 无内置,需自建 | Seata(成熟方案) | 无内置,需配合其他组件 | | 适用场景 | 企业级Java微服务,生态成熟 | 阿里云生态,高性能+分布式事务 | 高性能RPC、异步通信 | 其他的组件例如异步通信的消息队列、数据层的ES等,都可以视业务情况选择。

相关推荐
麦聪聊数据9 分钟前
为何通用堡垒机无法在数据库运维中实现精准风控?
数据库·sql·安全·低代码·架构
2的n次方_30 分钟前
CANN Ascend C 编程语言深度解析:异构并行架构、显式存储层级与指令级精细化控制机制
c语言·开发语言·架构
L、21841 分钟前
深入理解CANN:面向AI加速的异构计算架构详解
人工智能·架构
Max_uuc2 小时前
【架构心法】嵌入式系统的“防御性编程”:如何构建一个在灾难中存活的系统
架构
lbb 小魔仙2 小时前
面向 NPU 的高性能矩阵乘法:CANN ops-nn 算子库架构与优化技术
线性代数·矩阵·架构
是码龙不是码农3 小时前
支付防重复下单|5 种幂等性设计方案(从初级到架构级)
java·架构·幂等性
云边有个稻草人3 小时前
CANN异构架构:以ops-nn为翼,驱动AIGC底层计算新突破
架构·aigc
心疼你的一切3 小时前
模态交响:CANN驱动的跨模态AIGC统一架构
数据仓库·深度学习·架构·aigc·cann
晚霞的不甘3 小时前
CANN × ROS 2:为智能机器人打造实时 AI 推理底座
人工智能·神经网络·架构·机器人·开源
jiet_h4 小时前
后端 Verticle 架构实战:用 NeonBeeDeployable 推送一条通知
架构