微服务架构概念
微服务架构概念
前言:
微服务架构是一种将应用程序分解为多个小而自治的服务的软件架构。每个服务都有自己的功能,进程,语言和协议。可以独立部署和拓展。微服务架构可以提升应用程序的灵活性,可拓展性和开发效率。
微服务技术栈
- 随着人们需求的增加,相应的服务就增加了,构建起一个庞大的服务集群。
- 服务越多,服务之间的相互调用越来越复杂,这样我们就需要一个注册中心来记录每一个服务的IP与端口及功能。当需要调用服务时,只需要把请求发给注册中心,拉取对应的服务。
- 同时,每个服务器都有自己的配置文件,当配置发生变动时更改过于繁琐,这样就产生了配置中心。它统一管理整个集群的配置文件,配置变更时它会通知相应的服务器,从而实现配置的热更新。
- 对用户的访问设置了服务网关,它完成了用户的身份验证,请求路由,负载均衡等功能。
- 数据的增加造成数据库无法抗住高并发与大量的数据,可以加入分布式缓存把数据库中数据放入内存当中提升查询效率,用分布式搜索完成海量数据的复杂查询。
- 通常一个业务会跨越多个服务,这会导致整个业务了列路很长,调用时常就会等于每个服务的执行时常之和。加入消息队列后,起始服务发出通知而不是直接调用进而减少通行时间。
- 此外还有统一的分布式日志服务来检测服务的运行日志,更快的定位到问题所在。
- 系统监控链路追踪来检测整个集群中服务器的运行温度,cpu,内存等信息
微服务架构的发展
单一应用架构
当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。
大致就是将所有的逻辑和业务写在同一个项目中 一般网站流量小 并且只需要一个应用 将所有代码部署在一起 可以减少开发、部署、运维的成本
缺点:
- 性能扩展难
- 协同开发难
- 升级维护难
垂直应用架构
当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的 Web框架(MVC) 是关键。
就是将单体架构拆分为多个互不相干的应用 大大提升了效率
缺点:
- 公共模块无法重复利用,开发性浪费
分布式服务架构
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的**分布式服务框架(RPC)**是关键。
流动式计算框架
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心**(SOA)[ Service Oriented Architecture]**是关键。
微服务架构
微服务架构是一种经过良好架构设计的分布式架构方案,微服务架构特:
- 单一职责:微服务拆分粒度更小,每个服务都对应唯一的业务能力,能做到单一职责,避免重复业务开发
- 面向服务:微服务对外暴露业务接口
- 自治:团队独立,技术独立,数据独立,部署独立
- 隔离性强:服务调用做好隔离,容错,降级,避免出现级联问题。
微服务技术对比
微服务远程调用
提供者与消费者
- 服务提供者:一次业务中,被其他微服务调用的服务。(提供接口给其他微服务)
- 服务消费者:一次业务中,调用其他微服务的服务。(调用其他微服务提供的接口)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Heroxin!
评论