一、微服务技术栈
服务网关:用来作为请求的转发,将用户的请求转发到对应的微服务。这样作为调用方无需知道服务的IP以及端口号,只需要知道服务对外暴露的统一链接即可调用该服务。
注册中心:为什么有注册中心呢,它的存在有什么意义呢?假如我们先不考虑这个注册中心,我们来想一下,现在有两个服务:服务A和服务B。如果服务A需要调用服务B那么按照之前最简单的方式就是直接在服务A中配置服务B的IP:端口号/url 去调用服务B。但是微服务一般会有几十个或者上百个服务要相互调用,那还是按照这样来做的话是不是就很麻烦了,每个微服务都要配置维护几十个应用的地址,而且一旦有一个服务的地址放生了变化,那么所有的应用都需要进行修改。为了解决这个问题,在微服务里才引入了注册中心这个概念。
所有的微服务都会作为应用服务注册进来。各个服务在这里能够找到别的服务进行调用。这样一来所有的应用就不用再关心别的服务的地址,只需要知道服务的名称即可,然后根据名称去注册中心获取服务的地址还有端口号信息。这样以来极大方便了服务之间的调用。
配置中心:用来存放应用服务的配置文件信息,通过配置中心应用能够拉取自己的配置文件,还能做到热加载、分环境对配置文件进行统一管理。
服务集群:这个微服务所有服务的集合构成服务集群。
消息队列:消息队列的存在能够对服务进行解耦,异步和削峰。
解耦:就像我们的用户注册服务在用户注册完成后会调用邮件发送服务和短信发送服务以及会员积分服务。如果没有消息队列那么服务之间需要自己调用。这样服务的时间就会很长。但是引入消息队列以后就能在用户注册完成后将消息写入到消息队列然后其余几个服务拿到消息后分别进行处理。这样一来极大的缩短了服务的响应时间。
削峰:比如写日志服务,用户大量的访问我们想要记录下来那么用户访问的每个过程都会有大量的日志信息需要入库。如果同时一起写入那么就会对数据库造成很大的压力。所以将这些写入放入到消息队列以后就可以让写入服务从消息队列里获取写入信息,然后异步写入数据库,减少数据库压力。
分布式缓存:常用的Redis这些。主要作用就是减少数据库读取压力,因为数据库冰法不是很高,而且响应速度慢,所以引入分布式缓存,一来可以一高响应速度,缩短服务响应时间,二来可以减少数据库的压力,不用每次请求都打到数据库上。
分布式搜索:常用Lucene、ES(elasticSearch)分布式搜索引擎,底层还是基于lucene。相比于传统的数据库查询,ES将数据存放在内存中,查询速度更快。
数据库:用于应用数据存放和查询,部分数据会用于支持分布式搜索和分布式缓存。
分布式日志服务:记录系统内所有服务的日志信息,用于对系统或者用户行为进行分析和追踪。
系统监控链路追踪:因为微服务中会存在很多的服务节点。每个节点之前调用的拓扑图,以及每个节点相应的时间我们单存通过日志很难收集和分析。所以微服务都会引入链路追踪。这样就能就是发现服务卡顿或者出故障的节点。以便于及时发现和修复。
二、持续集成
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/96975.html