微服务与 DevOps实践:技术架构与组织架构(2)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 微服务与 DevOps实践:技术架构与组织架构(2)

9.2     融数数据微服务的架构选型

 

 

我们在构建微服务体系的过程中,经历了技术选型、技术验证、引入开源实现及完全自研等一系列的过程,其中也走过不少弯路,现在回想起来,感触良多,在这里跟大家分享一下,希望能够有所帮助。对于技术选型,我们不希望重复发明轮子,也不希望完全受制于开源的实现,所以在技术选型时遵循如下原则:image.png


 

考察社区热度、架构成熟度、学习曲线、可维护性,如图 9.3 所示。

 

尽量照顾现有服务的开发方式和框架的使用习惯,不对目前的研发团队造成太大的冲击。能够给程序员提供何种能力?我们的期望是:

 

  • 方便开发


  • 方便迁移


  • 多协议支持


  • 多语言支持


  • 方便监控
  • 方便运维


 

我们比较了可能用到的一些开源服务框架,并对它们的功能点进行了评估,如图 9.4 所示。



image.png


由于之前团队采用 RESTEasy + Spring Boot 的方式实现服务,不希望对现有的系统和产品产生太大的影响,因此决定服务框架首先需要支持 REST 服务,又由于 Netflix 提供了比较全面的解决方案,并且 Spring Cloud 在遵循 cloud-native 原则的基础上对 Netflix 进行了比较友好的封装,因此初步的结论是可以基于 Spring Cloud 进行二次开发,封装我们自己的微服务框架。


经过半年的实践,我们发现 Netflix 技术栈的思想不错,但是很多实现并不是特别完美,例如:

 

Zuul 提供的 Edge Service API 网关是完全基于 HTTP 协议的过滤器实现的,基于 HTTP 协议的同步调用方式会带来性能的损失,并且缺乏长连接的推送及多路复用的能力。

 

Zuul 不能满足 RPC 调用的需求,而在大规模团队协作的过程中,契约优先的开发方式优于代码优先的开发方式,因此对于应用内部交互来讲,RPC 框架从管理和协作的角度要优于 REST 服务。


 

基于 Eureka 的服务注册依然是中心化治理的方式,与传统基于 ZooKeeper 或者 etctd/consul 的治理方式一样,中心化的治理会给服务的部署带来非常大的阻碍,需要对不同的环境配置不同的中心注册服务器,服务的版本管理及服务注册信息的同步也会带来问题,更加糟糕的是,在某些服务不正常的情况下,客户端需要进行大量的判断,防止出现治理风暴等问题。


 

因此,我们后来果断转换思路,对之前的微服务框架进行了彻底的改造:

 

1、基于对 gRPC 的封装,构建 Service Provider 的全新实现,替代 REST 服务。

 

2、通过 Proxy 方式,实现 gRPC REST 服务的相互转换,保持系统兼容性。

 

3、进行去中心化治理,通过 Proxy 来实现端点治理,将客户端治理变为服务端治理。

 

4、通过扩展并集成 Zipkin 实现服务链路监控和运行时拓扑收集。

 

5、构建 Endpoint inventory 服务,以 semantic versioning 的方式管理服务版本。

 

6、将 Proxy 作为服务部署的执行端点,通过 VIP 绑定,透明化客户端寻址工作。利用 Proxy 提供轻量级的负载均衡、流量控制及灰度发布的功能。

 

 

9.3     设计思想

 

 

融数数据微服务架构的整体设计思想如图 9.5 所示。


image.png


该设计思想的具体说明如下。

 

面向运维的设计,配合 DevOps 平台,提供服务生命周期管理及易于被监控的能力。

 

面向开发者,合理封装。开发者无须了解 gRPC 的具体实现。

 

基于 IDL 的契约优先的开发方式。

 

提供完善的测试框架和 Mock 工具。

 

提供完善的易于监控的能力。

相关文章
|
21天前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
20天前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
141 68
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
19天前
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
149 36
微服务架构解析:跨越传统架构的技术革命
|
7天前
|
弹性计算 Java 关系型数据库
Web应用上云经典架构实践教学
Web应用上云经典架构实践教学
Web应用上云经典架构实践教学
|
22天前
|
运维 监控 Java
后端开发中的微服务架构实践与挑战####
在数字化转型加速的今天,微服务架构凭借其高度的灵活性、可扩展性和可维护性,成为众多企业后端系统构建的首选方案。本文深入探讨了微服务架构的核心概念、实施步骤、关键技术考量以及面临的主要挑战,旨在为开发者提供一份实用的实践指南。通过案例分析,揭示微服务在实际项目中的应用效果,并针对常见问题提出解决策略,帮助读者更好地理解和应对微服务架构带来的复杂性与机遇。 ####
|
21天前
|
消息中间件 运维 安全
后端开发中的微服务架构实践与挑战####
在数字化转型的浪潮中,微服务架构凭借其高度的灵活性和可扩展性,成为众多企业重构后端系统的首选方案。本文将深入探讨微服务的核心概念、设计原则、关键技术选型及在实际项目实施过程中面临的挑战与解决方案,旨在为开发者提供一套实用的微服务架构落地指南。我们将从理论框架出发,逐步深入至技术细节,最终通过案例分析,揭示如何在复杂业务场景下有效应用微服务,提升系统的整体性能与稳定性。 ####
33 1
|
22天前
|
消息中间件 运维 API
后端开发中的微服务架构实践####
本文深入探讨了微服务架构在后端开发中的应用,从其定义、优势到实际案例分析,全面解析了如何有效实施微服务以提升系统的可维护性、扩展性和灵活性。不同于传统摘要的概述性质,本摘要旨在激发读者对微服务架构深度探索的兴趣,通过提出问题而非直接给出答案的方式,引导读者深入
41 1
|
20天前
|
Cloud Native API 持续交付
云原生架构下的微服务治理策略与实践####
本文旨在探讨云原生环境下微服务架构的治理策略,通过分析当前面临的挑战,提出一系列实用的解决方案。我们将深入讨论如何利用容器化、服务网格(Service Mesh)等先进技术手段,提升微服务系统的可管理性、可扩展性和容错能力。此外,还将分享一些来自一线项目的经验教训,帮助读者更好地理解和应用这些理论到实际工作中去。 ####
36 0
|
1月前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
130 6
|
1月前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
51 1