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

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

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

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

Java微服务架构系列将从实战出发,开启Java微服务框架篇,深度学习各组件原理并进行实战。

分布式系统1_分布式系统概述与杂谈-CSDN博客提到

分布式系统设计是一个复杂的工程,需要考虑多个方面,包括但不限于服务架构的演进、远程服务调用、事务处理、流量治理、可观测性、数据一致性等等等。

宏观的来说,需要权衡各个方面的CAP,在一致性、可用性、分区容忍性之间选择优先级。

原则上来说,还是低耦合、高内聚、遵从大多架构设计说明的渐进式扩展、最小化复杂度等等。

这里主要探讨分布式架构的一种------微服务架构的选择。

Java程序员们已经见过与使用过很多成熟的演进好的架构方案,如SpringCloud、SpringCloudAlibaba、Dubbo,这些框架在服务通信、请求追踪、服务熔断、负载均衡、API网关、事务处理、流量治理、日志管理、数据一致性等等方面均有着成熟的组件,可以让服务稳定、健壮、自洽、可拓展、可维护、高性能等。

那么,在设计之初怎么选择服务框架呢?

尽量选择成熟的框架方案,设计之初不要过度设计,需以业务驱动为核心,通过垂直拆分、弱依赖、服务自治 等原则逐步演进。流行的有Spring Cloud、Spring Cloud Alibaba、Dubbo。

|----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 框架 | 文档 | 简单说明 |
| Spring Cloud | 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 | 版本对应:版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub 其wiki新地址Spring Cloud Alibaba官网_基于Springboot的微服务教程-阿里云 |
| Dubbo | https://cn.dubbo.apache.org/zh-cn/overview/what/overview/ | |

简单整理如下:

|---------|------------------------|-----------------------------|----------------------------------------------------------------------------------------------------|
| 维度 | 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等,都可以视业务情况选择。

相关推荐
艾莉丝努力练剑4 小时前
【AI大模型接入SDK】ChatServer HTTP接口模块实现总览
网络·c++·人工智能·网络协议·学习·http·架构
熊出没14 小时前
云原生架构落地实践:Kubernetes 生产级配置与 Service Mesh 流量治理
云原生·架构·kubernetes·istio
小坏讲微服务15 小时前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4
迪康妍妍15 小时前
终端管控实操:封堵网盘与IM外发通道的落地思路
运维·网络·安全·架构·安全性测试
光影少年18 小时前
AI Agent、自动化与未来工作
人工智能·算法·架构
xianyuCcCcCCCcc19 小时前
Ceph 分布式存储:核心架构与集群部署
分布式·ceph·架构
小天源19 小时前
智叟云集系统整体架构解析:多语言 API 接入、异步监控与本地化部署
架构·数据采集·数据中台·ai监测系统·geo数据监测
真上帝的左手20 小时前
10. 软件设计&架构-分布式文件存储系统
分布式·架构·应用架构
弈栈录20 小时前
大模型服务抽象:兼容 OpenAI、通义千问与本地模型
java·后端·架构
CCblandy21 小时前
一致性哈希到底省了多少搬迁?本机实测 3 轮:取模 6→7 搬 85.8%,V=128 只搬 14.3%,虚拟节点太少会被倾斜骗
后端·python·云原生·性能优化·架构