本文通过单体和微服务的对比来认识微服务是什么。
最近在学习微服务架构和相关知识,以此记录。
一、单体
1.单体是什么
一个应用,程序会有多个功能但是却单独存在,称为单体应用。
不需要和别的应用对接,不需要把功能拆分模块,我不想分类垃圾,就放在一个桶里,这个桶里面装了它所需要的所有功能,与外界没有依赖。在web单体应用中,从ui到后台再到数据库全部一体化,例如用户模块,核心业务模块,附属业务模块,支付模块等等,数据库也是一库到底,采用的就是单体应用架构。
2.单体优缺点
优点:
技术相对简单,对开发人员比较友好(一个项目的人员迭代)
部署方便,成本较低,无外部依赖(男人在外闯荡哪管的了儿女情长)
测试简单,懂得人自然懂。
效率相对于微服务高(内存交互 > 通信交互)
横切点无需冗余(日志,安全,效率问题的中间层只需部署一套)
缺点:
复杂性高,伸缩性差,所有业务存在一个应用,当业务不断增加扩展的时候,显得业务不够清晰,对代码质量也是一种考验,使得项目变得复杂,显得臃肿。
技术受限,导致产品效果不能极致化,在单体中所有技术人员同技术同语言,中间件,持久化存储等