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

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 微服务与 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 工具。

 

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

相关文章
|
7天前
|
API 持续交付 开发者
后端开发中的微服务架构实践与挑战
在数字化时代,后端服务的构建和管理变得日益复杂。本文将深入探讨微服务架构在后端开发中的应用,分析其在提高系统可扩展性、灵活性和可维护性方面的优势,同时讨论实施微服务时面临的挑战,如服务拆分、数据一致性和部署复杂性等。通过实际案例分析,本文旨在为开发者提供微服务架构的实用见解和解决策略。
|
8天前
|
弹性计算 Kubernetes Cloud Native
云原生架构下的微服务设计原则与实践####
本文深入探讨了在云原生环境中,微服务架构的设计原则、关键技术及实践案例。通过剖析传统单体架构面临的挑战,引出微服务作为解决方案的优势,并详细阐述了微服务设计的几大核心原则:单一职责、独立部署、弹性伸缩和服务自治。文章还介绍了容器化技术、Kubernetes等云原生工具如何助力微服务的高效实施,并通过一个实际项目案例,展示了从服务拆分到持续集成/持续部署(CI/CD)流程的完整实现路径,为读者提供了宝贵的实践经验和启发。 ####
|
1天前
|
监控 API 持续交付
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在后端开发中的应用,分析了其优势、面临的挑战以及最佳实践策略。不同于传统的单体应用,微服务通过细粒度的服务划分促进了系统的可维护性、可扩展性和敏捷性。文章首先概述了微服务的核心概念及其与传统架构的区别,随后详细阐述了构建微服务时需考虑的关键技术要素,如服务发现、API网关、容器化部署及持续集成/持续部署(CI/CD)流程。此外,还讨论了微服务实施过程中常见的问题,如服务间通信复杂度增加、数据一致性保障等,并提供了相应的解决方案和优化建议。总之,本文旨在为开发者提供一份关于如何在现代后端系统中有效采用和优化微服务架构的实用指南。 ####
|
3天前
|
消息中间件 设计模式 运维
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在现代后端开发中的应用,通过实际案例分析,揭示了其在提升系统灵活性、可扩展性及促进技术创新方面的显著优势。同时,文章也未回避微服务实施过程中面临的挑战,如服务间通信复杂性、数据一致性保障及部署运维难度增加等问题,并基于实践经验提出了一系列应对策略,为开发者在构建高效、稳定的微服务平台时提供有价值的参考。 ####
|
3天前
|
消息中间件 监控 数据管理
后端开发中的微服务架构实践与挑战####
【10月更文挑战第29天】 在当今快速发展的软件开发领域,微服务架构已成为构建高效、可扩展和易于维护应用程序的首选方案。本文探讨了微服务架构的核心概念、实施策略以及面临的主要挑战,旨在为开发者提供一份实用的指南,帮助他们在项目中成功应用微服务架构。通过具体案例分析,我们将深入了解如何克服服务划分、数据管理、通信机制等关键问题,以实现系统的高可用性和高性能。 --- ###
23 2
|
5天前
|
监控 安全 应用服务中间件
微服务架构下的API网关设计策略与实践####
本文深入探讨了在微服务架构下,API网关作为系统统一入口点的设计策略、实现细节及其在实际应用中的最佳实践。不同于传统的摘要概述,本部分将直接以一段精简的代码示例作为引子,展示一个基于NGINX的简单API网关配置片段,随后引出文章的核心内容,旨在通过具体实例激发读者兴趣,快速理解API网关在微服务架构中的关键作用及实现方式。 ```nginx server { listen 80; server_name api.example.com; location / { proxy_pass http://backend_service:5000;
|
3天前
|
Cloud Native API 云计算
云原生架构的深度探索与实践####
本文深入探讨了云原生架构的核心概念、技术特点及其在现代软件开发中的应用实践。通过分析云原生架构如何促进企业数字化转型,提升业务敏捷性与可扩展性,本文旨在为读者提供一个全面而深入的理解框架。我们将从云原生的定义出发,逐步深入到其关键技术组件、最佳实践案例及面临的挑战与解决方案,为开发者和企业决策者提供宝贵的参考与启示。 ####
|
3月前
|
敏捷开发 缓存 前端开发
阿里云云效产品使用合集之前端打包时npm安装卡住一般是什么导致的
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
敏捷开发 弹性计算 持续交付
阿里云云效产品使用合集之同一个主机部署是否支持下载多个制品
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
敏捷开发 监控 Java
阿里云云效产品使用合集之Codeup WebIDE环境下,如何使用通义灵码
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
下一篇
无影云桌面