微服务萌芽
首先聊点比较熟悉的:MVC模式,把一套系统分成三大类,前台页面和逻辑控制、数据库,最大的缺点就是当三者中的任何一个出现非常严重的Bug时运维人员要把整个系统的服务都停下来,一人生病全家休息!为了解决这种情况,一种“分家”的思路就萌芽了,把一大家分成小家,把庞大的系统切分成很多小系统,每个系统负责不同的业务功能。具体的可以参考 https://www.cnblogs.com/40406-jun/p/6535443.html
微服务介绍
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。微服务没有精确的定义,共同的特性,如围绕业务能力组织服务、自动化部署、智能端点、对语言及数据的“去集中化”控制等等。
认知盲点
在认知初期,服务和功能傻傻分不清,所以我不喜欢把功能服务放在一起。微服务中的服务是指完成一个事情的整套流程,比如打车服务,但是里面包括很多小功能,下单和取消订单等
优点
- 简单专注:每个服务比较简单,只关注一个业务
- 灵活:每个微服务内部功能高内聚,微服务之间松耦合
- 跨语言:每个微服务可以支持不同的开发语言,只需要注意调用方式
- 互不影响:一人生病,其他人照样上班
- 分步骤交付:工期长的项目可以交付
缺点
- 代码重复:底层实现的功能被多个微服务使用
- 开发人员技术要求高:开发人员也要回维护微服务系统
- 维护成本高:
- 接口问题:
- 分布式系统的复杂性:作为一种分布式系统,微服务引入了复杂性和其他若干问题,例如网络延迟、容错性、消息序列化、不可靠的网络、异步机制、版本化、差异化的工作负载等,开发人员需要考虑以上的分布式系统问题。