微服务 笔记

1.特性

  • 每个微服务可独立运行在自己的进程里
  • 一系列独立运行的微服务构建起整个系统
  • 每个服务为独立的业务开发,一个微服务只关注某个特定的功能
  • 微服务之间通过一些轻量的通信机制进行通信。例如通过RESTful API进行调用
  • 可以使用不同的语言与数据存储技术
  • 全自动的部署机制

2.微服务架构的优点

  • 易于开发和维护:一个微服务只会关注一个特定的业务功能,所以它业务清晰,代码量更少。开发和维护单个微服务相对简单。而整个应用是由若干个微服务构建而成的,所以整个应用也会维持一个可控的状态
  • 单个微服务启动较快:单个微服务代码量较少,所以启动较快
  • 局部修改容易部署:单体应用只要有修改,就得重新部署整个应用,微服务解决了这样的问题。一般来说,对某个微服务进行修改,只需要重新部署这个服务就可以了
  • 技术栈不受限:在微服务架构中,可以结合项目业务和团队的特点,合理的选择技术栈
  • 按需伸缩:可根据需求,实现细粒度的扩展。列如,系统中的某个微服务遇到了瓶颈,可以结合这个微服务的业务特点,增加内存、升级CPU或者是增加节点

3.微服务架构面临的挑战

  • 运维要求较高:更多的服务意味着更多的运维投入。
  • 分布式固有的复杂性:使用微服务构建的是分布式系统。对于一个分布式系统,系统容错、网络延迟、分布式事物等都会带来巨大的挑战
  • 接口调整成本高:微服务之间通过接口进行通信。如果要修改某一个微服务的API,可能所有使用了该接口的微服务都需要调整
  • 重复劳动:很多微服务可能都会使用到相同的功能,而这个功能并没有达到分解为一个微服务的程度,这个时候,可能各个微服务都会开发这一功能,从而导致代码重复。尽管可以通过共享库来解决这个问题,但共享库在多语言环境下就不一定行的通

4.微服务设计原则

  • 单一职责原则:一个单元只应关注整个系统中单独、有界限的一部分。单一职责原则可以帮助我们更优雅的开发、更敏捷的交互
  • 服务自治原则:每个微服务应具备独立的业务能力、依赖与运行环境。在微服务架构中,服务是独立的业务单元,应该与其他服务高度解耦
  • 轻量级通信机制:微服务之间应该通过轻量级的通信机制进行交互
  • 微服务粒度:应当使用合理的粒度划分微服务,而不是一味的把微服务做小。代码量的多少不能作为划分微服务的依据,因为不同的微服务本身的业务复杂性不同,代码量也不同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值