分布式服务一篇概览

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 分布式服务一篇概览

分布式服务开发复杂于服务间交互,协调,治理等。服务的复杂性由应用本身转移到了网络交互层。


一、关于12-factor问题



在开发分布式服务时,我们通常会考虑如12-factor 问题,如配置中心、无状态化、日志等。


一个代码库:支持多人协作开发的代码集中管理平台。


一个依赖库:服务依赖发布、存储、隔离等管理。


一个配置中心:集中的配置管理中心,服务,协调多服务应用。


可插拔的支持服务:如数据库、消息中间件、三方服务等。


构建、发布、运行过程管理:服务发布管理。


每一个服务实例都是一个无状态的工作进程。


服务通过绑定特定的端口对外提供服务。


通过增减服务实例类型及数量来实现服务伸缩。


快速启动,优雅关机增强服务健壮性。


尽可能的保持开发、测试及生产环境一致性。


事件流形式处理日志,分离影响。


脚本或命令行式的服务管理工具支持。


二、总览



借用一张图:

be55dbc9c2a94ceabc5c9f8f8ebbbcdd.png


三、服务发现



当由多个服务实例提供服务时,客户端需要知道都有哪些可调用服务,服务的具体位置以及怎么调用。


分布式协调服务:服务注册与发现。如 Eureka(AP)、Consul(CP)、Zookeeper(CP)、Nacos(CP + AP) 及 Etcd (CP)等。


示例 Nacos 架构图:

image.png


四、API 网关



客户端及服务端之间是多对对关系,对于涉及到统一权限管理、路由负载、日志、监控等支持性功能需求,网关服务处理相对更加合适。如 Spring Cloud GatewaynginxOpenRestyzuulAPISIX 等。


示例 Spring Gate Way 工作流程:

114f8766fd9154b8f2c744937c4efbff.png


五、配置中心



独立的服务配置可以和服务集成在一起,对于分布式多服务模式,灵活、集中的配置管理则非常必要。


配置中心一般需要提供配置添加、删除、更新管理,环境管理、灰度管理、版本控制等。如 ApolloNacos、Spring Cloud Config 等。


Apollo vs Spring Cloud Config:


image.png


题外话:



相关内容拓展:(技术前沿)

近10年间,甚至连传统企业都开始大面积数字化时,我们发现开发内部工具的过程中,大量的页面、场景、组件等在不断重复,这种重复造轮子的工作,浪费工程师的大量时间。


针对这类问题,低代码把某些重复出现的场景、流程,具象化成一个个组件、api、数据库接口,避免了重复造轮子。极大的提高了程序员的生产效率。 体验官网:https://www.jnpfsoft.com/?csdn


推荐一款程序员都应该知道的软件JNPF快速开发平台,采用业内领先的SpringBoot微服务架构、支持SpringCloud模式,完善了平台的扩增基础,满足了系统快速开发、灵活拓展、无缝集成和高性能应用等综合能力;采用前后端分离模式,前端和后端的开发人员可分工合作负责不同板块,省事又便捷。


还没有了解低代码这项技术可以赶紧体验学习!


六、服务治理



分布式服务涉及多服务间协调共同对外提供服务。相对来说,会有更多的不可控因素影响其可用性,如服务间调用超时、流量过载等,因此服务治理也是一门必修课。


熔断降级、流量控制支持:Spring Cloud Circuit BreakerResilience4JSentinelHystrix


Sentinel 示例

image.png


七、链路追踪



分布式服务使得问题追踪变得很困难,需要综合请求路径上不同服务节点表现来定位问题。因此首先需要有一条链,一条从请求调用入口到服务底层再到返回的完整追踪链路。


支持组件如:Spring Cloud Sleuth、Zipkin、SkyWalking。

示例 SkyWalking 架构图:

64c9f3590f9b4d38e11467c145acdcff.png


八、日志



汇总所有服务日志顺序综合展示。包括日志收集,传送,落库存储及展示等。


典型如 ELK,logstash 负责收集日志数据及传送,ElasticSearch 负责存储,Kibana 负责 查询展示。


数据采集存在多种可选收集器:如 filebeat(更轻量)、logstash、Fluentd 等。

31586a12699891fc3824e09cde84b637.png


九、监控



(Prometheus | Zabbix)+ Grafana )


1、Promethueus


开源系统监控报警系统。负责收集,存储时间序列监控数据并展示。整体架构图如下:

e04880d4eeb783c1f36f99321cf54139.png



2、Zabbix


开源的分布式监控解决方案。


3、Grafana


提供查询,多维度可视化展示,报警等功能。

77a0f05e131d59be5bb7f74fe1593f33.png


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
5月前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
500 2
|
5月前
|
监控 负载均衡 Dubbo
|
5月前
|
消息中间件 算法 Java
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
228 0
|
7天前
|
数据采集 分布式计算 MaxCompute
MaxCompute 分布式计算框架 MaxFrame 服务正式商业化公告
MaxCompute 分布式计算框架 MaxFrame 服务于北京时间2024年09月27日正式商业化!
26 3
|
2月前
|
Java 应用服务中间件 数据库
SpringCloud:服务保护和分布式事务详解
SpringCloud:服务保护和分布式事务详解
96 0
|
4月前
|
消息中间件 传感器 Cloud Native
事件驱动作为分布式异步服务架构
【6月更文挑战第25天】本文介绍事件驱动架构(EDA)是异步分布式设计的关键模式,适用于高扩展性需求。EDA提升服务韧性,支持CQRS、数据通知、开放式接口和事件流处理。然而,其脆弱性包括组件控制、数据交换、逻辑关系复杂性、潜在死循环和高并发挑战。EDA在云原生环境,如Serverless,中尤其适用。
124 2
事件驱动作为分布式异步服务架构
|
5月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
240 0
|
5月前
|
存储 算法
服务中一个简单的分布式系统
【5月更文挑战第21天】本文介绍一个分布式算法,旨在解决高速和低速网络环境下进程间保持相同通信频率的问题。算法通过frequencyEpoch防止过时信息导致无效切换,确保只有在多数节点检测到当前频率嘈杂时才会切换。
40 0
服务中一个简单的分布式系统
|
5月前
|
Cloud Native 数据管理 关系型数据库
【阿里云云原生专栏】云原生数据管理:阿里云数据库服务的分布式实践
【5月更文挑战第21天】阿里云数据库服务在云原生时代展现优势,应对分布式数据管理挑战。PolarDB等服务保证高可用和弹性,通过多副本机制和分布式事务确保数据一致性和可靠性。示例代码展示了在阿里云数据库上进行分布式事务操作。此外,丰富的监控工具协助用户管理数据库性能,支持企业的数字化转型和业务增长。
218 1
下一篇
无影云桌面