wordpress商城 中文站,网络工程师什么时候考,电商网站难做吗,自己建网站卖鞋前面的文章里我们介绍了微服务架构的一些基础知识以及特点#xff0c;也提到了国产的微服务架构标准实现SpringCloud Alibaba#xff0c;聊了这么多#xff0c;还是没有开始阐述各组件在Java技术体系中的具体实现。那从这里开始#xff0c;我们开始全面认识微服务架构在Jav…前面的文章里我们介绍了微服务架构的一些基础知识以及特点也提到了国产的微服务架构标准实现SpringCloud Alibaba聊了这么多还是没有开始阐述各组件在Java技术体系中的具体实现。那从这里开始我们开始全面认识微服务架构在Java体系中依托哪些组件实现的。
相对于单体架构的简单粗暴微服务的核心是将应用打散形成多个独立提供的微服务虽然从管理与逻辑上更符合业务需要。但微服务架构也带来了很多急需解决的核心问题 1、如何发现新节点以及检查各节点的运行状态 2、如何发现服务及负载均衡如何实现 3、服务间如何进行消息通信 4、如何对使用者暴露服务API 5、如何集中管理各节点配置文件 6、如何收集各节点日志并统一管理 7、如何直观的了解各节点间的调用链路 8、如何对系统进行链路保护避免服务雪崩 可以发现以上的各个问题不是针对某种语言或某种技术的任何要构建微服务架构的企业都需要面对这些问题要么公司内部逐个研究各个问题的解决办法要么就将已有的多种技术整合形成整体解决方案。好在经过互联网行业的多年发展业内对于上述问题基本都有了标准的解决方案下图清晰的说明了微服务架构需要的标准组件。 下面我们来逐个了解各个组件的职责
1、注册中心Service Registry
注册中心是微服务架构最核心的组件。它起到的作用是对新节点的注册与状态维护通过注册中心可解决上述第1个问题1、如何发现新节点以及检查各节点的运行状态。
微服务节点在启动时会将自己的服务名称、IP、端口等信息在注册中心登记注册中心会定时检查该节点的运行状态。注册中心通常会采用心跳机制最大程度保证已登记过的服务节点都是可用的。 2、负载均衡Load Balance
负载均衡解决了第2个问题 2、如何发现服务及负载均衡如何实现。通常微服务在互相调用时并不是直接通过IP、端口进行访问调用。而是先通过服务名在注册中心查询该服务拥有哪些节点注册中心将该服务可用节点列表返回给服务调用者这个过程叫服务发现因服务高可用的要求服务调用者会接收到多个节点必须要从中进行选择。因此服务调用者一端必须内置负载均衡器通过负载均衡策略选择合适的节点发起实质性的通信请求。 3、服务通信(Communication)
服务通信组件解决了问题33、服务间如何进行消息通信。服务间通信采用轻量级协议通常是HTTP RESTful风格。但因为RESTful风格过于灵活必须加以约束通常应用时对其封装。例如在SpringCloud中就提供了Feign和RestTemplate两种技术屏蔽底层的实现细节所有开发者都是基于封装后统一的SDK进行开发有利于团队间的相互合作。
4、API服务网关(API Gateway)
服务网关主要是解决问题44、如何对使用者暴露服务API对于最终调用方来说微服务的通信与各种实现细节应该是透明的调用者只需关注他要使用的 API 接口即可。因此微服务架构引入的服务网关控制用户的访问权限。服务网关是外部环境访问内部微服务的唯一途径在这个基础上还可以扩展出其他功能例如用户认证与授权、容错限流、动态路由、A/B测试、灰度发布等。 5、配置中心(Config Management)
配置中心主要解决了问题55、如何集中管理各节点配置文件在微服务架构下所有的微服务节点都包含自己的各种配置文件如jdbc配置、自定义配置、环境配置、运行参数配置等。要知道有的微服务可能可能有几十个节点如果将这些配置文件分散存储在节点上发生配置更改就需要逐个节点调整将给运维人员带来巨大的压力。配置中心便由此而生通过部署配置中心服务器将各节点配置文件从服务中剥离集中转存到配置中心。一般配置中心都有UI界面方便实现大规模集群配置调整。 6、集中式日志管理(Centralized Logging)
集中式日志主要是解决了问题66、如何收集各节点日志并统一管理。微服务架构默认将应用日志分别保存在部署节点上当需要对日志数据和操作数据进行数据分析和数据统计时必须收集所有节点的日志数据。那么怎么高效收集所有节点的日志数据呢业内常见的方案有ELK、EFK。通过搭建独立的日志收集系统定时抓取各节点增量日志形成有效的统计报表为统计和分析提供数据支撑。
7、分布式链路追踪Distributed Tracing
很不舒服链路追踪解决了问题77、如何直观的了解各节点间的调用链路。系统中一个复杂的业务流程可能会出现连续调用多个微服务我们需要了解完整的业务逻辑涉及的每个微服务的运行状态通过可视化链路图展现可以帮助开发人员快速分析系统瓶颈及出错的服务。 8、服务保护Service Protection
服务保护主要是解决了问题88、如何对系统进行链路保护避免服务雪崩。在业务运行时微服务间互相调用支撑如果某个微服务出现高延迟导致线程池满载或是业务处理失败。这里就需要引入服务保护组件来实现高延迟服务的快速降级避免系统崩溃。
以上就是微服务架构包含的组件以及各个组件在架构中承担的职责。下篇文章我们来聊一下在Java中如何实现微服务架构的。 欢迎关注公众号服务端技术精选。欢迎点赞、关注、转发。