微服务是指按业务与数据将统一的系统拆分成若干相对独立自治的子服务,各服务只实现特定功能(如登录服务只实现登录相关的逻辑),服务以接口的形式为应用或其他服务提供功能与数据(如订单服务调用登录服务的检查登录态接口来判断用户是否登录),这种按业务拆分系统的解决方案称之为微服务架构。
微服务是指开发一个组小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上微服务也指一种种松耦合的、有一定的有界上下文的面向服务架构。也就是说,如果每个服务都要同时修改,那么它们就不是微服务,因为它们紧耦合在一起;它的主要特点是组件化、松耦合、自治、去中心化,体现在以下几个方面:
一组小的服务 服务粒度要小,而每个服务是针对一个单一职责的业务能力的封装,专注做好一件事情。
独立部署运行和扩展 每个服务能够独立被部署并运行在一个进程内。这种运行和部署方式能够赋予系统灵活的代码组织方式和发布节奏,使得快速交付和应对变化成为可能。
独立开发和演化 技术选型灵活,不受遗留系统技术约束。合适的业务问题选择合适的技术可以独立演化。服务与服务之间采取与语言无关的API进行集成。相对单体架构,微服务架构是更面向业务创新的一种架构模式。
独立团队和自治 团队对服务的整个生命周期负责,工作在独立的上下文中,自己决策自己治理,而不需要统一的指挥中心。团队和团队之间通过松散的社区部落进行衔接。
1.注册中心
注册中心记录服务调度策略与服务接口的路由信息,网关根据注册中心配置的服务调度信息实现负载均衡。注册中心的服务配置信息可由具体服务上报,也可由注册中心主动去具体服务查询,对于大的集群建议由具体服务上报自身信息到注册中心,一般情况下可由注册中心主动去查询服务配置信息,这样具体服务不用关心注册中心,只提供自身配置信息查询接口。
2.对外网关
对外网关是内部服务集中出口,决定外部流量的走向,将流量分发到相应的服务,并且实现负载均衡策略。
3.内部网关
内部网关,为内部服务提供集中调用的地址,网络隔离,不对外开放。添加内部网关主要是方便统一服务间相互调用,以及服务接口权限控制。很多架构人员认为内部服务相互调用应该是直联方式,不应该通过网关中转。但笔者认为内部网关与服务都处在内网环境,添加一个集中调度网关不存在性能问题,能更好控制接口访问权限与负载均衡,不然内部服务要关心访问权限与负载均衡等非业务问题。
4.配置中心
配置中心主要管理通用配置,比如缓存配置、数据库连接配置、消息队列连接配置等,避免业务服务重复配置的问题,将繁琐、分散的配置简单化、集中化。
5.监控平台
监控整个服务集群的运行状态、流量情况等,提供异常报警功能,做到异常结点的可视化监管。
6.日志平台
业务日志集中化管理,可以通过kafka等消息队列收集业务服务的日志,进行集中管理与分析统计。
7.缓存集群
缓存高频数据,有效减轻数据库的负担,提升系统并发处理能力与稳定性。
8.数据库集群
业务数据最终落地保存在数据库,也是缓存数据的来源,不同业务服务最好有单独的数据库与缓存,做好冷热数据分离,定期转存历史数据以减少在线数据量。
9.业务服务
微服务架构下系统是由一组小的业务集群共同完成的,按业务与数据将系统拆分成不同的服务,每个服务实现特定功能,在管理上实现独立自治,可横向拓展。