当前位置: 首页 > news >正文

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

http://www.dtcms.com/a/75772.html

相关文章:

  • 【SoC基础】单片机之RCC模块
  • 【C++】:C++11详解 —— 右值引用
  • 常用的加密算法及相关术语简介
  • 如何通过Python的`requests`库接入DeepSeek智能API
  • 孜然SEO静态页面生成系统V1.0
  • Qwen2-Audio:通义千问音频大模型技术解读
  • Java内部类
  • 【STM32】uwTick在程序中的作用及用法,并与Delay函数的区别
  • redis三主三从集群部署
  • Logic-RL:小参数qwen模型复现DeepSeek R1 zero
  • 自学软硬件第755 docker容器虚拟化技术
  • 图解Spring-解决循环依赖流程
  • 使用 OpenSSL 构建安全的网络应用
  • 前端开发概论
  • 网易云信架构升级实践,故障恢复时间缩至8秒
  • TDengine 支持的所有运算符
  • 零基础学python+人工智能ai(持续更新ing)
  • 【MySQL】基本查询(下)
  • 什么是MCP(Model Context Protocol)?对话、意图识别、服务调用和上下文管理
  • django self.get_queryset() 如何筛选
  • Flask实时监控:打造智能多设备在线离线检测平台(升级版)
  • 素数判定方法详解:从基础试除法到优化策略
  • linux系统 Ubuntu22.04安装Nvidia驱动,解决4060系列显卡重启黑屏方法
  • c语言笔记 结构体内嵌套结构体的表示方式
  • 二维前缀矩阵
  • 十七、实战开发 uni-app x 项目(仿京东)- 后端指南
  • 5.0 VisionPro调用USB相机的方法与步骤说明(一)
  • Vue 渲染 LaTeX 公式 Markdown 库
  • 问题 | ACOS(X) 与 ACOSD(X)的区别
  • cmake结合qt开发界面程序实例