微服务,简单来说就是微小的服务,将一个应用拆封成为一个一个的更小的服务,每一个服务都是一个可以独立运行的项目。
目录
1. 微服务架构的常见问题
采用微服务架构之后,会产生这么几个问题:
- 这么多微服务,如何管理?
- 这么多微服务,都是独立的,他们如何通信?
- 这么多微服务,客户端要怎么访问呢?记住每一个服务的网址吗?
- 这么多微服务,一旦出现了问题,该怎么自处理呢?
- 这么多微服务,出现了问题,要怎么找到问题出在哪里?
采用了微服务架构,那么这些问题时跳不过去的,所以大部分的微服务产品针对上边的问题都提供了相应的解决办法。使用相应的组件就可以解决这些问题了!
解决图示:
下边来看一些这些组件吧!
相应的组件
1. 服务治理:解决管理问题
服务治理就是进行服务的自动化管理,其核心是服务的自动注册与发现
服务注册: 服务实例将自身服务信息注册到注册中心
服务发现: 服务实力通过注册中心,获取到注册到其中的服务实例的信息,通过这些信息去请求他们提供的服务
服务剔除: 服务注册中心将出问题的服务自动剔除到可用列表之外,使其不会被调用。
2. 服务调用:解决服务通信问题
在微服务架构中,经常会存在多个服务之间的远程调用的需求。目前主流的远程调用技术有基于 HTTP 的 Restful 接口, 还有基于 TCP 的 RPC 协议
3. 服务网关: 解决客户端访问问题
随着微服务不断增多,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务接口才能完成一个业务需求,如果客户端直接与每个微服务通信可能会出现:
- 客户端需要调用不同的 url 地址才能访问不同的服务
- 在一定的场景下,存在跨域请求的问题,例如:跨端口,跨ip,跨协议
- 每个微服务存在单独的身份认证
针对这些问题,出现了 API 网关
API 网关将所有的 API 调用同一接入到 API 网关层,由网关层统一控制,一个网关的基本功能有:同一接入,安全防护,协议适配,流量控制,长短连接支持,容错能力。有了网关之后,每个服务都可以专注于自己的业务逻辑。
4. 服务容错:解决自处理问题
在微服务中,一个请求经常会涉及到调用几个服务,如果其中某个服务不可用,如果没有服务容错的化,很有可能会出现一个服务导致一连串服务不可用的情况,出现服务雪崩。
为了防止雪崩,就出现了服务容错,服务容错的三个思想:
- 不被外界影响: 不被外界的运行环境影响
- 不被上游请求压垮:不能因为上游的频繁访问导致服务不可用
- 不被下游相应拖垮:不能因为下游响应缓慢、无响应拖累, 要有备用方案
5. 链路追踪:找到出现问题的地方
服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。
因此,就需要对一次请求涉及的多个服务链路进行日志记录,性能监控即链路追踪。
这样就可以很快的找到问题出现的地方以及原因了。
就是这样!