版本号 | 作者 | SpringCloud版本号 | 备注 | |
---|---|---|---|---|
v20200717 | 学生宫布 | 8416837 | Hoxton.SR4 | 微服务 |
课题 | 基于springCloud的微服务架构的实现 | |
---|---|---|
目标 | 了解微服务;学会搭建基础的微服务项目结构;学会服务通信; | |
时间 | 根据基础 分钟 | |
分享人 | 研发部-学生宫布 |
尊重版权,转载请注明出处,点击进入原文
简单地说,微服务架构风格就是一种将单个应用
拆分成一组
小服务开发的方法,每一个小服务运行在它自己的进程
中并且使用轻量的协议通信,通常是一个HTTP
资源API。这些服务围绕业务能力构建并且由自动化部署
机器部署。这些服务有着最小化的中央管理,这个中央管理可以使用不同语言编写,并使用不同的数据存储
技术。
———— James Lewis and Martin Fowler
单体架构的缺陷日益增长
技术栈成熟
社区活跃
简单,解决复杂性
:架构复杂,但开发业务相对简单,
易于开发和维护
: 一个微服务只会关注一个特定的业务功能,所以它业务清晰、代码量较少。 开发和维护单个微服务相对简单。而整个应用是由若干个微服务构建而成的,所以整个应用也会被维持在一个可控状态。
单个微服务启动较快
: 单个微服务代码量较少, 所以启动会比较快。
迭代方便
: 单体应用只要有修改,就得重新部署整个应用,微服务解决了这样的问题。 一般来说,对某个微服务进行修改,只需要重新部署这个服务即可。
技术栈不受限
: 在微服务架构中,可以结合项目业务及团队的特点,合理地选择技术栈。例如某些服务可使用关系型数据库MySQL;某些微服务有图形计算的需求,可以使用Neo4j;甚至可根据需要,部分微服务使用Java开发,部分微服务使用Node.js等开发。
易于定位BUG
: 排查范围缩小了
坚固
:处理好熔断,系统不会因为单一模块的崩溃而全盘宕机
降低了耦合度
: 松耦合。把模块拆分,使用接口或消息通信,降低模块之间的耦合度
责任清晰
: 把项目拆分成若干个子项目,不同的团队负责不同的子项目
扩展方便
: 增加功能时只需要再增加一个子项目
部署方便
: 可以灵活的进行分布式部署
细粒度较细,提高代码的复用性
: 比如 service 层,如果不采用分布式 REST 服务方式架构就会在手机 wap 商城,微信商城,PC,Android,IOS 每个端都要写一个 service 层逻辑,开发量大,难以维护一起升级,这时候就可以采用分布式 REST 服务方式,公用基础服务层。
弹性节点
:灵活集群,针对某一服务增减节点
开发难度
:当基础架构搭建完毕后,开发者基于模板开发,学习成本几乎是0
复杂性高: 以一个百万行级别的单体应用为例,整个项目包含的模块非常多、模块的边界模糊、 依赖关系不清晰、 代码质量参差不齐、 混乱地堆砌在一起。可想而知整个项目非常复杂。 每次修改代码都心惊胆战, 甚至添加一个简单的功能, 或者修改一个 Bug 都会带来隐含的缺陷。
技术债务: 随着时间推移、需求变更和人员更迭,会逐渐形成应用程序的技术债务, 并且越积 越多。“ 不坏不修”, 这在软件开发中非常常见, 在单体应用中这种思想更甚。 已使用的系统设计或代码难以被修改,因为应用程序中的其他模块可能会以意料之外的方式使用它。
部署频率低: 随着代码的增多,构建和部署的时间也会增加。而在单体应用中, 每次功能的变更或缺陷的修复都会导致需要重新部署整个应用。全量部署的方式耗时长、 影响范围大、 风险高, 这使得单体应用项目上线部署的频率较低。 而部署频率低又导致两次发布之间会有大量的功能变更和缺陷修复,出错率比较高。
可靠性差: 某个应用Bug,例如死循环、内存溢出等, 可能会导致整个应用的崩溃。
定位BUG效率低,不细化,排查范围较大。
扩展能力受限: 单体应用只能作为一个整体进行扩展,无法根据业务模块的需要进行伸缩。例如,应用中有的模块是计算密集型的,它需要强劲的CPU; 有的模块则是IO密集型的,需要更大的内存。 由于这些模块部署在一起,不得不在硬件的选择上做出妥协。
阻碍技术创新: 单体应用往往使用统一的技术平台或方案解决所有的问题, 团队中的每个成员可能都必须使用相同的开发语言和框架,要想引入新框架或新技术平台会非常困难。
日益臃肿:依赖、废弃代码等
PS
:图片来自网络多系统的项目;
持续迭代的大项目;
单体项目拆分迭代;
划分原则:业务划分和功能划分:业务层、基础服务层(做底层技术支撑)
既互相独立,又彼此联系,这叫松散耦合
本文发布于:2024-02-01 19:42:38,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170678775839002.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |