一个完整的微服务项目,应该包含以下几种类型的必要组件:


注册中心:Euraka、Zookeeper、Nacos

分布式配置中心:Spring Cloud Config、Nacos、Disconf

熔断降级:Hystrix,Sentinel、Resilience4j

服务通信RPC:Feign、OpenFeign、Dubbo

分布式事务:Setea

负载均衡:Ribbon、LoadBalancer、Dubbo

API网关:zuul、Spring Cloud Gateway、Dubbo Proxy、Nginx


我们知道现今有Spring Cloud Netflix系列、Spring Cloud官方系列、Spring Cloud Alibaba系列组件,由于Netflix系列从2018年开始就都不再维护,所以如果是一个新项目,就应该尽量避免使用此系列的组件,防止后续更换组件带来的困扰。所以Euraka、Hystrix、Feign、Ribbon、Zuul都可以直接被舍弃了。

Spring Cloud Config是Spring官方推荐的分布式配置中心,但是由于自身的一些问题,以及在其他配置中心光芒的掩盖下,也日渐无人问津。

Nginx很多人将其归为网关,其实在微服务的架构下,Nginx是针对集群,进行多个项目间的路由转发,而真正的分布式API网关如GateWay和Dubbo等,则是主要针对分布式,进行项目内路由的转发。所以Nginx为必选项,API网关需要另外考虑。

那么剩下的组件就还剩下:


注册中心:Zookeeper、Nacos

分布式配置中心:Nacos、Disconf、Apollo、Diamond

熔断降级:Sentinel、Resilience4j

服务通信RPC:OpenFeign、Dubbo

分布式事务:Setea

负载均衡:LoadBalancer、Dubbo

API网关:Spring Cloud Gateway、Dubbo Proxy


我们经过分析发现,其实最后剩下的,大致可以分为两类:Spring Cloud Alibaba系列相关组件;以及Spring Cloud官方对于过时的Netflix的替代组件;

当然,两种类型没有明显的界限区分,完全可以混搭,并且不会有什么问题,每个组件都很好的兼容了其他组件,也由此让人更加头皮发麻,不知如何抉择。

方案一:


注册中心:Nacos

分布式配置中心:Nacos

熔断降级:Sentinel

服务通信RPC:OpenFeign

分布式事务:Seata

负载均衡:LoadBalancer

API网关:Spring Cloud Gateway


理由:经典的Spring Cloud Alibaba一套。服务通信并没有Dubbo,而是使用OpenFeign。由于OpenFeign在2020年之后的版本,不再默认支持Ribbon和Hystrix,反而默认支持LoadBalancer承载负载均衡功能,所以负载均衡就不需要犹豫了。而熔断降级组件Hystrix的缺失,按道理使用Spring Cloud官方推荐的Resilience4j,或者使用Alibaba系列的Sentinel都是可以的,但是考虑到Resilience4j只包含限流降级的基本场景,对于非常复杂的企业级服务架构可能无法很好地 cover 住;同时 Resilience4j 缺乏生产级别的配套设施(如提供规则管理和实时监控能力的控制台),所以选择Sentinel。

方案二:


注册中心:Zookeeper

分布式配置中心:Zookeeper

熔断降级:Sentinel

服务通信RPC:Dubbo

分布式事务:Seata

负载均衡:Dubbo LB

API网关:Dubbo Proxy / Spring Cloud GateWay


理由:Dubbo系列也是众多大公司的选择,一般选择Dubbo作为RPC通信框架,注册中心和配置中心都会选择Zookeeper,两者孟不离焦,焦不离孟,Zookeeper也是Dubbo官网中明确表示推荐的注册中心。至于熔断降级,Dubbo本身是自带降级功能的,但是不完善,同时也缺失熔断功能,所以需要集成其他熔断降级组件,同出一源的Sentinel自然就是最好的选择。Dubbo 里面默认集成了负载均衡的算法和实现,所以无需另外集成负载均衡组件。网关的话,可以选择Dubbo Proxy或者Spring Cloud GateWay,此方案的网关可以根据自己想法酌情考虑,甚至不使用网关也可以,无法给出肯定推荐。

针对方案二,还有个变种,那就是替换Zookeeper,使用Nacos替换。有许多项目也是舍弃Zookeeper,拥抱Nacos。正如以下爱奇艺的Dubbo实践所言,Zookeeper并不是微服务注册中心的最佳选型,它的主要缺点包括:

1、无法横向扩展;
2、作为一个一致性的系统,在网络分区会产生不可用;

爱奇艺在 Dubbo 生态下的微服务架构实践

结语

每个公司都有自己的基础环境,基础环境不同,就会对技术选型产生极大影响。所以如美团、滴滴、饿了么等等公司,要么另起炉灶,要么是对这些微服务组件进行私人定制,使得更加符合公司环境。而如果公司没有那么大的体量,可以参考以上最新的微服务选型推荐。

–我是“道祖且长”,一个在互联网"苟且偷生"的Java程序员
“如果感觉博客对你有用,麻烦给个点赞、评论、收藏,谢谢”

最新Java微服务项目该选择什么技术架构相关推荐

  1. 2023年最新黑马程序员Java微服务项目--学成在线

    正式上线Java微服务项目<学成在线> 项目对程序员的重要性 不用播妞多说了吧 更重要的是 这次是完整!实战!企业级!项目! 划重点:全新发布!正式上线! <学成在线>项目以在 ...

  2. java微服务项目简历_Spring Cloud及微服务简介

    最近在看微服务编排的东西,看到一篇入门博客,私以为不错,再次分享下:https://blog.csdn.net/w05980598/article/details/79007194 什么是微服务 微服 ...

  3. java微服务项目简历_微服务框架-SpringCloud简介

    前面一篇文章谈到微服务基础框架,而Netflix的多个开源组件一起正好可以提供完整的分布式微服务基础架构环境,而对于Spring Cloud正是对Netflix的多个开源组件进一步的封装而成,同时又实 ...

  4. 基于微服务API级权限的技术架构

    一般而言,企业内部一套成熟的权限系统,都是基于角色(Role)的 访问控制方法(RBAC – Role Based Access Control),即权限 (Permission)与角色相关联,用户( ...

  5. 带有Spring Cloud Config和JHipster的Java微服务

    朋友不允许朋友写用户身份验证. 厌倦了管理自己的用户? 立即尝试Okta的API和Java SDK. 在几分钟之内即可对任何应用程序中的用户进行身份验证,管理和保护. 如今,使用Java和Spring ...

  6. Docker——使用docker工具管理软件/组件的运行,镜像、容器、数据卷的基本概念,常用指令,使用docker搭建Java微服务运行环境

    Docker--使用docker工具管理软件/组件的运行,镜像.容器.数据卷的基本概念,常用指令,使用docker搭建Java微服务运行环境 一.docker的安装和卸载 1.卸载 2.安装 3. 导 ...

  7. Spring Cloud Alibaba 大型微服务项目实战

    作者介绍 程序员十三,多年一线开发经验,历任高级开发工程师.后端主程.技术部门主管等职位.同时也是开源项目的爱好者和贡献者.掘金优秀作者.CSDN 博客专家.实体图书作者.专栏作者.视频讲师. 小册介 ...

  8. 好家伙,阿里P8撰写的Java微服务架构全栈笔记GitHub一夜飞到榜首

    Java微服务作为当下最常用的架构技术,快速实现编程开发而且维护起来十分的方便,可以简单是实现高可用,分布式开发而且也很安全! 今天给大家分享的这份<Java微服务架构全栈笔记>,用140 ...

  9. guns 最新开源框架企业版下载_国内比较火的5款Java微服务开源项目

    本文介绍国内比较火的5款Java微服务开源项目,pig是基于Spring Cloud.OAuth2.0.Vue的前后端分离的系统. 通用RBAC权限设计及其数据权限和分库分表 支持服务限流.动态路由. ...

最新文章

  1. r语言和python-r语言和python
  2. 好习惯!pandas 8 个常用的 option 设置
  3. 这个偏僻的小山村竟出了12位博士28位硕士,高产“学霸”背后原因曝光......
  4. 支持向量机 - 从原理到算法的实现
  5. 移动端 H5 分屏页面适配问题--设计稿比例与设备宽高比例不同
  6. 企‮增业‬长‮两的‬种方式:内‮式生‬增长、外‮式延‬增长
  7. 第三章EF的基本使用 EF添加数据实体模型
  8. 简易的文件上传 tp5
  9. VALSE2019总结(4)-主题报告
  10. 【论文】动态贝叶斯网络用于时序建模及动作分类
  11. 宝塔脚本下载慢解决办法
  12. python excel数据合并_如何用python将excel数据合并
  13. 抗渗等级p6是什么意思_混凝土抗渗等级w4是什么意思?
  14. 马斯克要买地当「城主」/ 苹果手表引入ChatGPT/ 小鹏辟谣多名核心高管离职…今日更多新鲜事在此...
  15. ab 发送post请求 测试API性能
  16. ldo低压差线性稳压器电路解析
  17. java 小球抛物线_vue 2.0 购物车小球抛物线
  18. Python 调用 ImageMagick 将常规图片转成 .ico 图片
  19. 3.矩阵乘法和逆矩阵
  20. IPV6到IPV4的转换

热门文章

  1. 塞班简史:一个时代的终结
  2. 冬至日当天,北京时间早上9点,潍坊地区高度100米的楼的影子长度是多少?请列出详细的计算过程...
  3. 电视家3.0用U盘自建频道踩坑,最终安装成功
  4. Windows C盘清理细则(文末附文档)
  5. 快速学习COSMIC方法之七:如何理解功能处理的定义?
  6. hud抬头显示器哪个好_给爱车装上抬头显示,拒做低头族,行车更安全
  7. 安卓厨房linux汉化,【Madrigal 原创】一键制作ROM包,和安卓厨房完整版优化精简...
  8. 每日小型简短新闻12条 11月30日 星期一
  9. 无法打开计算机 eploxre 接口未知,绝地求生辅助发卡网Win7系统打开计算机属性提示“此项目的属性未知”解决方案...
  10. 大数据和云计算在智慧工厂中的应用