微信公众号

分布式架构方式微服务

什么是微服务

微服务(Microservice)是一种架构模式,将单一应用划分成一组服务,服务之间采用轻量级的通信机制(通常是基于HTTP的RESTful API)。微服务架构已经得到了广泛认可。一个大型系统可以由多个微服务组成,每个微服务独立部署,实现自己的业务单元,微服务之间通过API方式进行通信调用,是松耦合的。

微服务特点:

复杂度可控:将应用分解,每一个微服务专注于单一功能。每个微服务复杂度低,易于保持高可维护性和开发效率。
独立部署:每个微服务都可独立部署,缩短应用交付周期。
技术选型灵活:微服务架构是去中心化的,每个团队可以自由选择最适合的技术栈。
可扩展:可随时增加减少微服务,每个服务可根据实际需求独立进行扩展。
可靠性高:故障被隔离在单个服务中,提高整体可靠性。

基础组件:

服务注册

免去人工维护微服务节点的信息同步。

服务网关

作为所有API接口服务请求的接入点,实现安全、验证、路由、过滤、流控、缓存等策略,对所有API服务的调用进行统一管理。

配置中心

统一管理微服务节点配置信息。包括微服务节点信息、程序运行时配置、变量配置、数据源配置、日志配置、版本配置等。

服务框架

规范各微服务节点之间如何协同工作,包括通信协议、数据传输。

服务监控

监控节点健康情况,保障节点的高可用,收集数据指标、对数据实时处理和分析,形成监控报表和预警。

服务追踪

请求会经过多个微服务节点,形成一个调用链。问题追踪和故障定位,需要对请求的完整调用链进行记录。

服务治理

保障整个微服务架构在极端情况下也能正常提供服务的措施。比如:熔断、限流、隔离等。

微服务框架

SpringCloud

Spring Cloud是微服务一系列工具的整合,目前配合springboot已成为主流。Spring Boot专注于快速、方便集成的单个微服务个体;Spring Cloud关注全局的服务治理。Spring Cloud通过http协议调用,不会破坏现有服务,前端服务调用无需做任何调整。Spring Cloud有几个组件:注册中心、服务网关、服务监控、负载均衡器。注册中心使用 Spring Cloud 提供的 Eureka,服务网关使用Spring Cloud提供的 Zuul 组件,负载均衡器使用Ribbon组件。

不要急于微服务

一个稳定的微服务架构,是需要持续集成、自动化部署、自动化测试、健全的监控体系来保障的。如果团队还不具备DevOps,这些基础的建设都没有做好,一上来就搞微服务的话,会导致实施过程中问题百出,微服务的优势不能发挥。随着微服务数量的增多,相比单体应用,会有更多本地开发问题。

集中式系统在可维护性、一致性方面有优势,而分布式系统需要达到同等或更高的可维护性与高一致性,需要通过先进的分布式中间件与大规模运维平台来支持。

 

Google开源容器编排系统 Kubernetes(K8S) 大数据高吞吐量的分布式消息队列系统 Kafka
微信公众号