分布式服务一篇概览

本文涉及的产品
日志服务 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日志并进行多维度分析。
相关文章
|
7月前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
609 2
|
7月前
|
消息中间件 算法 Java
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
240 0
|
2月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
92 3
|
4月前
|
存储 监控 负载均衡
检索服务elasticsearch分布式结构
【8月更文挑战第22天】
54 3
|
8天前
|
消息中间件 存储 安全
分布式系统架构3:服务容错
分布式系统因其复杂性,故障几乎是必然的。那么如何让系统在不可避免的故障中依然保持稳定?本文详细介绍了分布式架构中7种核心的服务容错策略,包括故障转移、快速失败、安全失败等,以及它们在实际业务场景中的应用。无论是支付场景的快速失败,还是日志采集的安全失败,每种策略都有自己的适用领域和优缺点。此外,文章还为技术面试提供了解题思路,助你在关键时刻脱颖而出。掌握这些策略,不仅能提升系统健壮性,还能让你的技术栈更上一层楼!快来深入学习,走向架构师之路吧!
43 11
|
3月前
|
数据采集 分布式计算 MaxCompute
MaxCompute 分布式计算框架 MaxFrame 服务正式商业化公告
MaxCompute 分布式计算框架 MaxFrame 服务于北京时间2024年09月27日正式商业化!
109 3
|
7月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
307 0
|
6月前
|
消息中间件 传感器 Cloud Native
事件驱动作为分布式异步服务架构
【6月更文挑战第25天】本文介绍事件驱动架构(EDA)是异步分布式设计的关键模式,适用于高扩展性需求。EDA提升服务韧性,支持CQRS、数据通知、开放式接口和事件流处理。然而,其脆弱性包括组件控制、数据交换、逻辑关系复杂性、潜在死循环和高并发挑战。EDA在云原生环境,如Serverless,中尤其适用。
219 2
事件驱动作为分布式异步服务架构
|
4月前
|
Java 应用服务中间件 数据库
SpringCloud:服务保护和分布式事务详解
SpringCloud:服务保护和分布式事务详解
136 0

热门文章

最新文章