记录微服务学习过程,以最快的效率完成学习目标,达到线上可用的微服务最佳实践。
首先明确一点,软件开发没有银弹。微服务只是工程化发展过程中的一环,但是经过许多公司和产品的检验,微服务是能够适用于大部分场景的一种系统组织形式。
我在工作当中有按照微服务概念去拆分项目,但是没有生产环境的SpringCloud或者Dubbo等微服务框架应用经验。
接下来本系列将从初学者的视角,以三个角度,相互穿插递进,来对微服务进行学习。
- 微服务是什么?从微服务概念理解入手,理清楚微服务为什么出现,解决了什么问题,又带来了什么问题。
- 微服务怎么用?从SpringCloud入手,由简至繁,逐步将各组件应用到项目中。
- 微服务有什么问题?单体向微服务拆分会遇到新的问题、多模块维护会遇到问题、每引入一个新的组件都会带来维护难度提升的问题,逐步吃透这些问题,保证线上稳定性。
大家提到项目架构的时候,脑海里会想到什么?
一般脑海里可能会立刻冒出一些词:前后端分离、MVC、单体应用、分布式、微服务。
我在网上搜了一下架构方案,还有一堆接触比较少的技术名词:DDD、SOA、ServiceMesh、Serverless、云原生。
其实这些都是架构方案,只是讨论的角度不太一样,对上面这些方案简单做一下划分,帮助大家理解。
- 架构风格:单体应用、分布式、SOA、微服务
- 代码分层:前后端分离、MVC、DDD
- 基建方案:ServiceMesh、Serverless、云原生
云原生比较特殊,它其实指一堆概念、落地方案的聚合,包括容器化、微服务、devops等,属于是提供了一个云上的最佳实践,每家云厂商都在做,当然具体实现标准就各有差异了。