微服务架构
微服务架构的优势
- 独立开发
- 独立部署
- 故障隔离
- 混合技术栈
- 粒度缩放
对微服务怎么理解
微服务架构是一种分布式架构解决方案,推动细粒度服务的使用,每个服务都可以独立运行,且这些服务可以协同工作。
微服务有哪些特点
- 解藕
- 组件化
- 业务能力
- 自治
- 持续交付
- 责任
- 分散治理
- 敏捷性
设计微服务的最佳实践是什么
- 为每个微服务分开数据存储
- 将代码保持在类似的成熟度等级上
- 为每个微服务进行单独的构建
- 部署到容器中
- 将服务器视为无状态的
微服务架构的优点
- 可以自由使用不同的技术
- 每个服务专注于单一功能
- 支持单个可部署单元
- 允许软件的持续发布
- 可确保每项服务的安全性
- 并行开发和部署多个服务
微服务架构的缺点
- 增加故障排除的难度
- 由于远程调用而导致延迟增加
- 增加配置和其他操作的工作量
- 难以维持处理的安全性
- 很难跟踪各种边界的数据
- 服务之间难以编码
单体应用、SOA和微服务架构有什么区别
- 单体应用类似一个大容器,其中程序的所有组件都被组装在一起并紧密包装
- SOA是一组相互通信的服务。通信可以涉及简单的数据传送,也可以涉及两个或多个协调某些活动的服务
- 微服务架构是一种架构风格,它将应用程序构建为以业务域为模型的小型自治服务集合
使用微服务架构面临的挑战是什么
- 自动化组件:难以自动化,因为有许多较小的组件。对于每个组件,都必须采取构建、发布和监控的步骤
- 可感知性:将大量组件维持在一起会带来难以部署、维护、监控和识别的问题。它需要在所有组件周围具有很好的感知力
- 配置管理:有时在各种环境中维护组件的配置会很困难
- 调试:很难找到与产生的错误相关的每一项服务。维护一个集中式的日志和控制面板对调试问题至关重要
什么是内聚
内聚是一个模块内部各元素之间相关程度的度量
什么是耦合
组件之间依赖关系强度的度量被称为耦合。好的设计总是高内聚低耦合的
什么是REST/RESTful
表述性状态转移是一种帮助计算机系统通过Internet进行通信的架构风格。
REST的用途是什么
它使得微服务更容易理解和实现,用RESTful API去构建松散耦合的微服务总是更容易些
微服务之间是如何通讯的
远程过程调用RPC:
- 直接用远程过程调用来访问别的服务
- 示例:REST、gRPC、Apache、Thrif
- 优点:简单,常见。因为没有中间件代理,系统更简单
- 缺点:只支持请求/响应的模式,不支持别的;降低了可用性
消息
- 使用异步消息来做服务间的通信。服务间通过消息来交换消息,从而通信
- 示例:Apache Kafka、RabbitMQ
- 优点:把客户端和服务端解藕,更松耦合,提高可用性,因为消息中间件缓存了消息,直到消费者可以消费;支持多种通信机制比如通知、请求/异步响应、发布/订阅、发布/异步响应
- 缺点:消息中间件有额外的复杂性
内容摘自:https://mp.weixin.qq.com/s/RN3MdzyaY-AGJOktO0GLfQ
远程过程调用RPC
凡事都有它的原因,决策才是最重要的