为什么选择springcloud作为微服务架构
文章目录
- 选型依据
- 各大IT公司用的微服务架构有那些
- 阿里Dubbo/HSF
- 京东JSF
- 新浪微博Motan
- 当当网DubboX
- 各微服务框架对比
选型依据
微服务架构是不是只有springcloud一种落地的技术呢?不是。好比天上一个理念——卖汉堡,落地的是肯德基、麦当劳、德克士,同样为什么springcloud拔得头筹、浮出水面呢?一家大公司的架构师选择技术不是瞎选的,不是哪个新就用那个,比如有些公司还在用java6,因为它们是对商业负责,要的是稳定压倒一切,不见得最新最全的技术是最好的。是有一套依据的,
选型依据
- 整体解决方案和框架成熟度
- 社区热度
- 可维护性
- 学习曲线
比方说,我们用spring,我们从这四个维度来看。大把大把的都知道市面上有这些熟悉spring的java程序员,假设tomcat出问题了,那么ok各种社区的方案都有。假设用一个比较偏门的如sun公司的glassfish,它也是类似于tomcat的一个容器,但是这个玻璃鱼在市面上帖子的数和维度没有tomcat高。
各大IT公司用的微服务架构有那些
阿里Dubbo/HSF
阿里前面用的是Dubbo,后面很可惜dubbo从2012年开始停止更新了5年。因为梁飞团队被打散,梁飞Dubbo的主要负责人目前已经在天猫服务,其他人走的走散的散,Dubbo就停更了。2017年,阿里又重启了对Dubbo的维护,正因为停更5年,它睡大觉,给springcloud社区极好的不是趁虚而入的时间,5年呀5个月都会发生多少框架的改变,springcloud直接异军突起,之后dubbo能不能追上,不大明白,现在搞得我们java程序员很难受,如果Dubbo一直坚守,我们就不用学习springcloud了。但现在没办法,只好两个框架都学,到公司用springcloud还是dubbo你都能做。
梁飞团队被打散后,阿里用的是HSF(High Speed Framework),分布式的高速框架,可以理解为第二代的Dubbo,江湖人称好舒服。阿里的很多框架都喜欢用首字母拼,比如TDDL数据库,江湖人称头都大了
京东JSF
阿里的人被京东挖了一堆,京东几乎是对标阿里的,这年头敢跟马爸爸叫板的是不是也就强哥大强子了。它们也要做一套分布式的服务治理框架,这个时候就是JD SF ,江湖人称京舒服。
新浪微博Motan
取名达摩魔毯,后来改名魔毯
当当网DubboX
不用说,也知道当当网当时是借鉴了阿里的Dubbo框架出了自己的DubboX,但是很可惜当当网的老大Lisa已经把当当网给卖了,所以在社区上当当网给DubboX的维护我个人是不看好,因为公司都被卖了。
有同行认为现在能够异军突起的,就是2017年Dubbo重启后的3.0和目前的springCloud之争。两个就好比华山派的剑宗和气宗之争,谁能胜出那么就要看二者大战结果了。
各微服务框架对比
为什么springcloud会脱颖而出?这个东西不是说背书依靠spring有强大的社区,怎么样怎么的就牛,不是这样滴,我们看下服务对比
一个微服务要满足很多种微服务的落地维度,是否支持Rest、支持RPC、负载均衡。。。要是一个好的微服务框架,就要满足这么多维度,第一看看你是否满足,第二看看如何满足,什么叫如何满足呢?第一种叫自力更生——满足这些微服务都是自己的东西,第二种叫借用第三方技术。我们收集了市面上的几个微服务框架,做了对比
功能点/服务框架 | Netflix/Spring cloud | Motan | gRPC | Thrift | Dubbo/DubboX |
---|---|---|---|---|---|
功能定位 | 完整的微服务框架 | RPC框架,但整合了ZK或Consul,实现集群环境的基本的服务注册/发现 | RPC框架 | RPC框架 | 服务框架 |
支持Rest | 是 Ribbon支持多种可插拔的序列化选择 | 否 | 否 | 否 | 否 |
支持RPC | 否 | 是(Hession2) | 是 | 是 | 是 |
支持多语言 | 是(Rest形式) | 否 | 是 | 是 | 否 |
服务的注册/发现 | 是(Eureka) Eureka服务注册表,Karyon服务端框架支持服务注册和健康检查 | 是(zookeeper/consul) | 否 | 否 | 是 |
负载均衡 | 是(服务端zuul+客户端Ribbon) Zuul-服务,动态路由 云端负载均衡 Eureka(针对中间层服务器) | 是(客户端) | 否 | 否 | 是(客户端) |
配置服务 | Netflix Archaius Spring cloud Config Server 集中配置 | 是(zookeeper提供) | 否 | 否 | 否 |
服务调用链监控 | 是(zuul)Zuul提供边缘服务,API网关 | 否 | 否 | 否 | 否 |
高可用/容错 | 是(服务端Hystrix+客户端Ribbon) | 是(客户端) | 否 | 否 | 是(客户端) |
典型应用案例 | Netflix | Sina | |||
社区活跃度 | 高 | 一般 | 高 | 一般 | 已经不维护了(2017年以前) |
学习难度 | 中等 | 低 | 高 | 高 | 低 |
文档丰富度 | 高 | 一般 | 一般 | 一般 | 高 |
其他 | Spring Cloud Bus为我们的应用程序带来了更多管理端点 | 支持降级 | Netflix内部在开发集成gRPC | IDL定义 | 实践的公司比较多 |
说明:
- 支持Rest维度,springcloud外其它几种都是否,为什呢?spring家族里前端springmvc干翻了struts2,大家都知道struts2因为安全漏洞的问题被各大IT公司所抛弃,连它自己都不用了,被前端用Rest springmvc来代替。
- 我们主要将springcloud和dubbo做对比,就是为什么springcloud被选出来了。两句话,Dubbo睡觉睡了5年,这个东西人家springcloud可不是龟兔赛跑,springcloud可是猎豹,你睡了5年,那不会给你机会的。现在来说,老系统用dubbo的多,新系统用springcloud的多,在公司里上班,我个人觉得springcloud是一定要掌握的。
- 落地微服务架构的技术维度,springcloud都几乎满足,所以springcloud牛不是吹牛皮的,不是背靠spring大背书,而是自身确确实实能够凭借一己之力满足微服务架构的技术维度要点。
为什么选择springcloud作为微服务架构相关推荐
- 基于SpringCloud的微服务架构演变史?
系统架构演变概述 在公司业务初创时期,面对的主要问题是如何将一个想法变成实际的软件实现,在这个时候整个软件系统的架构并没有搞得那么复杂,为了快速迭代,整个软件系统就是由"App+后台服务&q ...
- 微服务架构与SpringCloud:微服务架构的特点
微服务架构与Spring Cloud 近几年大家都在谈论云原生和微服务,例如 © 云原生技术能够帮助公司和机构在私有云.公有云和混有云等新型动态环境中,构建和运行可弹性扩展的应用. 微服务架构是一项在 ...
- SpringCloud学习--微服务架构
目录 微服务架构快速指南 SOA Dubbo Spring Cloud Dubbo与SpringCloud对比 微服务(Microservice)架构快速指南 什么是软件架构? 软件架构是一个包含各种 ...
- SpringCloud Alibaba 微服务架构(十五)- 一文详解 Nacos 高可用特性
前言 服务注册发现是一个经久不衰的话题,Dubbo 早期开源时默认的注册中心 Zookeeper 最早进入人们的视线,并且在很长一段时间里,人们将注册中心和 Zookeeper 划上了等号,可能 Zo ...
- 基于SpringCloud的微服务架构分析,神仙框架!
点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | ...
- SpringCloud Hystrix微服务架构的高并发问题与解决策略
一.微服务架构的高并发问题 背景:由于服务器的最大处理线程数都是有上线的,比如tomcat等.当系统某时刻出现高并发请求时,如秒杀活动等,在瞬间服务器可处理线程数瞬间使用完,线程资源耗尽.当后面的其他 ...
- 《SpringCloud Alibaba 微服务架构》专题(二十一)-Seat简介与安装
文章目录 1.业务场景 2.Seata简介 3.Seata原理和设计 4.seata-server的安装与配置 Seata是Alibaba开源的一款分布式事务解决方案,致力于提供高性能和简单易用的分布 ...
- 基于springCloud的微服务架构设计
Spring Cloud作为一套微服务治理的框架,几乎考虑到了微服务治理的方方面面,之前也写过一些关于Spring Cloud文章,主要偏重各组件的使用,本次分享主要解答这两个问题:Spring Cl ...
- SpringCloud Alibaba 微服务架构(十一)- 分布式事务解决方案及理论基础篇
前言 在传统的单体应用架构中,例如经典的SSM,项目会采用分层架构模式:数据库访问层.业务逻辑层.控制层,从前端到后台所有的代码都是一个或者几个开发者去完成,该架构模式没有对我们业务逻辑代码实现拆分. ...
- SpringCloud Alibaba 微服务架构版本说明
详情
最新文章
- 简单的分页控件(原创)
- 长城电脑或收购夏新电子笔记本业务
- C#中简单的正则表达式(也经常会用到的)
- leetcode 722. Remove Comments | 722. 删除注释(Java)
- 一个入门的学生选课系统
- 四、pink老师的学习笔记——元素的显示与隐藏
- MyBatis由浅入深学习总结之二:MyBatis解决Java实体类和数据库表字段不一致方法总结
- Linux启动脚本rc.local 不执行的解决方法
- What's the difference between Unicode and UTF-8?
- python爬虫总结之xpath元素定位
- LDA线性判别原理解析<数学推导>
- python分段函数输入x的值求y的值,根据以下分段函数计算y的值,要求x的值由键盘输入,...
- 思科为计算机配置ip命令,cisco路由器配置命令练习
- Navision的ERP系统 - 微软Dynamics NAV的ERP软件评论
- Day10--路由嵌套+项目前后台搭建
- 2009最新QQ空间密码QQ相册密码破解
- Unity3D项目之游戏场景小地图制作
- 鼠标滑过卡片的上浮效果
- JavaScript 实现表格隔行变色
- 第04课: wiki 在 GitHub
热门文章
- python使用密钥加密的表述_python - PythonGnuPG生成密钥,对消息进行加密和解密 - SO中文参考 - www.soinside.com...
- ActiveMQ(四)——异步发消息、异步消费消息与prefetchSize之间的关系
- sudo和su命令简介
- Backup--BUFFERSIZE 和BUFFERCOUNT
- T-SQL笔记8:索引
- [Other] Inno Setup 使用心德-一个完整的项目 包括.NET组建捆绑 去空格等
- Gradle基础介绍
- BZOJ2259[Oibh] 新型计算机
- [2018.09.05 T1] Lyk Love painting
- ARC098E Range Minimum Queries