智能观察一篇文章快速理解微服务架构
Posted 中铝视拓产业观察
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了智能观察一篇文章快速理解微服务架构相关的知识,希望对你有一定的参考价值。
开发简单直接,集中式管理
基本不会重复开发
功能都在本地,没有分布式的管理开销和调用开销
开发效率低:所有的开发在一个项目改代码,递交代码相互等待,代码冲突不断。
代码维护难:代码功能耦合在一起,新人不知道何从下手。
部署不灵活:构建时间长,任何小修改必须重新构建整个项目,这个过程往往很长。
稳定性不高:一个微不足道的小问题,可以导致整个应用挂掉。
扩展性不够:无法满足高并发情况下的业务需求。
API Gateway
服务间调用
服务发现
服务容错
服务部署
数据调用
Spring Cloud Config:由Git存储库支持的集中式外部配置管理。配置资源直接映射到Spring Environment,但是如果需要可以被非Spring应用程序使用。
Spring Cloud Netflix:与各种Netflix OSS组件(Eureka,Hystrix,Zuul,Archaius等)集成。
Spring Cloud Bus:用于将服务和服务实例与分布式消息传递联系起来的事件总线。用于在集群中传播状态更改(例如配置更改事件)。
Spring Cloud for Cloudfoundry:将您的应用程序与Pivotal Cloudfoundry集成。提供服务发现实现,还可以轻松实现通过SSO和OAuth 2保护资源,还可以创建Cloudfoundry服务代理。
Spring Cloud - Cloud Foundry Service Broker:提供构建管理一个Cloud Foundry中服务的服务代理的起点。
Spring Cloud Cluster:领导选举和通用状态模型(基于ZooKeeper,Redis,Hazelcast,Consul的抽象和实现)。
Spring Cloud Consul:结合Hashicorp Consul的服务发现和配置管理
Spring Cloud Security:在Zuul代理中为负载平衡的OAuth 2休眠客户端和认证头中继提供支持。
Spring Cloud Sleuth:适用于Spring Cloud应用程序的分布式跟踪,与Zipkin,HTrace和基于日志(例如ELK)跟踪兼容。
Spring Cloud Data Flow:针对现代运行时的可组合微服务应用程序的云本地编排服务。易于使用的DSL,拖放式GUI和REST-API一起简化了基于微服务的数据管道的整体编排。
Spring Cloud Stream:轻量级事件驱动的微服务框架,可快速构建可连接到外部系统的应用程序。使用Apache Kafka或RabbitMQ在Spring Boot应用程序之间发送和接收消息的简单声明式模型。
Spring Cloud Stream Application Starters:Spring Cloud任务应用程序启动器是Spring Boot应用程序,可能是任何进程,包括不会永远运行的Spring Batch作业,并且它们在有限时间的数据处理之后结束/停止。
Spring Cloud ZooKeeper:ZooKeeper的服务发现和配置管理。
Spring Cloud for Amazon Web Services:轻松集成托管的Amazon的Web Services服务。它通过使用Spring的idioms和APIs便捷集成AWS服务,例如缓存或消息API。开发人员可以围绕托管服务,不必关心基础架构来构建应用。
Spring Cloud Connectors:使PaaS应用程序在各种平台上轻松连接到后端服务,如数据库和消息代理(以前称为“Spring Cloud”的项目)。
Spring Cloud Starters:作为基于Spring Boot的启动项目,降低依赖管理(在Angel.SR2后,不在作为独立项目)。
Spring Cloud CLI:插件支持基于Groovy预言快速创建Spring Cloud的组件应用。
远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
应用程序间通讯的中间层
轻量级网络代理
应用程序无感知
解耦应用程序的重试/超时、监控、追踪和服务发现
负载平衡:Linkerd提供了多种负载均衡算法,它们使用实时性能指标来分配负载并减少整个应用程序的尾部延迟。
熔断:Linkerd包含自动熔断,将停止将流量发送到被认为不健康的实例,从而使他们有机会恢复并避免连锁反应故障。
服务发现:Linkerd 与各种服务发现后端集成,通过删除特定的(ad-hoc)服务发现实现来帮助您降低代码的复杂性。
动态请求路由:Linkerd 启用动态请求路由和重新路由,允许您使用最少量的配置来设置分段服务(staging service),金丝雀(canaries),蓝绿部署(blue-green deploy),跨DC故障切换和黑暗流量(dark traffic)。
重试次数和截止日期:Linkerd可以在某些故障时自动重试请求,并且可以在指定的时间段之后让请求超时。
TLS:Linkerd可以配置为使用TLS发送和接收请求,您可以使用它来加密跨主机边界的通信,而不用修改现有的应用程序代码。
HTTP代理集成:Linkerd可以作为HTTP代理,几乎所有现代HTTP客户端都广泛支持,使其易于集成到现有应用程序中。
透明代理:您可以在主机上使用iptables规则,设置通过Linkerd的透明代理。
gRPC:Linkerd支持HTTP/2和TLS,允许它路由gRPC请求,支持高级RPC机制,如双向流,流程控制和结构化数据负载。
分布式跟踪:Linkerd支持分布式跟踪和度量仪器,可以提供跨越所有服务的统一的可观察性。
仪器仪表:Linkerd支持分布式跟踪和度量仪器,可以提供跨越所有服务的统一的可观察性。
外置进程架构:可与任何语言开发的应用一起工作;可快速升级。
基于新C++11编码:能够提供高效的性能。
L3/L4过滤器:核心是一个L3/L4网络代理,能够作为一个可编程过滤器实现不同TCP代理任务,插入到主服务当中。通过编写过滤器来支持各种任务,如原始TCP代理、HTTP代理、TLS客户端证书身份验证等。
HTTP L7过滤器:支持一个额外的HTTP L7过滤层。HTTP过滤器作为一个插件,插入到HTTP链接管理子系统中,从而执行不同的任务,如缓冲,速率限制,路由/转发,嗅探Amazon的DynamoDB等等。
支持HTTP/2:在HTTP模式下,支持HTTP/1.1、HTTP/2,并且支持HTTP/1.1、HTTP/2双向代理。这意味着HTTP/1.1和HTTP/2,在客户机和目标服务器的任何组合都可以桥接。
HTTP L7路由:在HTTP模式下运行时,支持根据content type、runtime values等,基于path的路由和重定向。可用于服务的前端/边缘代理。
支持gRPC:gRPC是一个来自谷歌的RPC框架,使用HTTP/2作为底层的多路传输。HTTP/2承载的gRPC请求和应答,都可以使用Envoy的路由和LB能力。
支持MongoDB L7:支持获取统计和连接记录等信息。
支持DynamoDB L7:支持获取统计和连接等信息。
服务发现:支持多种服务发现方法,包括异步DNS解析和通过REST请求服务发现服务。
健康检查:含有一个健康检查子系统,可以对上游服务集群进行主动的健康检查。也支持被动健康检查。
高级LB:包括自动重试、断路器,全局限速,阻隔请求,异常检测。未来还计划支持请求速率控制。
前端代理:可作为前端代理,包括TLS、HTTP/1.1、HTTP/2,以及HTTP L7路由。
极好的可观察性:对所有子系统,提供了可靠的统计能力。目前支持statsd以及兼容的统计库。还可以通过管理端口查看统计信息,还支持 第三方的分布式跟踪机制。
动态配置:提供分层的动态配置API,用户可以使用这些API构建复杂的集中管理部署。
流量管理:控制服务之间的流量和API调用的流向,使得调用更可靠,并使网络在恶劣情况下更加健壮。
可观察性:了解服务之间的依赖关系,以及它们之间流量的本质和流向,从而提供快速识别问题的能力。
策略执行:将组织策略应用于服务之间的互动,确保访问策略得以执行,资源在消费者之间良好分配。策略的更改是通过配置网格而不是修改应用程序代码。
服务身份和安全:为网格中的服务提供可验证身份,并提供保护服务流量的能力,使其可以在不同可信度的网络上流转。
数据面板由一组智能代理(Envoy)组成,代理部署为边车,调解和控制微服务之间所有的网络通信。
控制面板负责管理和配置代理来路由流量,以及在运行时执行策略。
文章转自 Docker
以上是关于智能观察一篇文章快速理解微服务架构的主要内容,如果未能解决你的问题,请参考以下文章