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

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

9.4     总体架构

 

融数数据微服务总体架构(Graeae)如图 9.6 所示。


 

image.png


9.4.1    总体架构的特性

 

融数数据微服务总体架构有如下特性。

 

Graeae 架构与协议无关。该架构可以基于 Netty4、线程模型及 buffer pool 进行调整,以减少 GC 压力并通过线程切换提升性能协议。

 

遵循 protocol buffer 协议,可以做到通用性强、序列化性能好、压缩效率高。

 

语言中立,目前整个架构支持 Java、Python 和 Go 三种语言的开发。

 

引入了熔断器机制、流量控制、服务治理。

 

基于 Proxy 和 PaaS 平台进行分布式治理监控。

 

使用集成 Zipkin 的调用链监控,以及基于 Pinpoint 的 APM 监控。

 

对于该架构而言,直接调用的性能好于反射调用,且使用 Netty4 线程模型优化。

 

9.4.2    具体实现

 

服务提供者 Endpoint 基于责任链模式(如图 9.7 所示)对 gRPC 进行封装,对屏蔽了 gRPC 框架的事件驱动采用同步调用方式,方便业务迁移。


image.png


Endpoint 封装了脚手架工具,提供基于 ProtoBuf 的 IDL 接口定义语言,使用契约优先的方式定义服务,并可以自动生产服务端和客户端的代码框架。

 

代码优先意味着实现简单,能够快速执行。问题也很明显,可能和某个具体语言绑定,面对多语言环境,其打通成本较高。

 

契约优先的中立性提供了一个中间桥梁,让面向多语言成为了可能,基于契约的元信息为后续治理和演进提供了入口点。缺点是需要引入契约语言的学习,并与多语言进行适配。

 

Endpoint 采用生命周期自管理的方式,提供容器化的生命周期管理 API 和相应的 SPI,方便扩展及与 DevOps 工具结合。

 

外部管理(如 Tomcat)让用户不用关注自身的起始、消亡,但带来的不足是对生命周期的管理相对减弱、部署的依赖管理扩散。

 

进程自治可以加强其对自身生命周期的管理,高内聚,不将依赖扩散。在一定程度上能够带来部署的便利及不同部署环境的适应性(如云环境)。为优雅关闭提供切入点,进一步增强对系统的可控性。


 

从对环境适应性和对生命周期的管理能力考虑,进程自治有着不可忽略的优势。Endpoint 将配置与代码分离,提供多种方式的配置覆盖能力,使得改变配置无须重新

 

部署。

 

配置和代码一起进行的优点是使开发变得简单,但不足也很明显,即面对不同的环境需要部署多套代码,复杂度增加。

 

配置和代码分离后的优点是真正做到了只部署一套代码。配置信息按环境独立配置,不受环境制约,可随时调整。

 

集成 Spring Boot,提供自定义注解方式,能够快速启动服务,方便开发。

 

//服务提供方

 

public class SmsTemplateApplication {

 

public static void main(String[] args) {

 

new SpringApplicationBuilder().sources(SmsTemplateApplication.class)

 

.web(false).showBanner(false).run(args);

 

}

 

}

 

//服务实现

 

public class SmsTempletServiceImpl implements SmsTemplateService { @Autowired

 

private SmsTempletDao smsTempletDao;

 

@Transactional

 

public DeleteReply deleteById(IdRequest req) { return SmsTemplateReply.newBuilder().build(); }

 

}


 

利用 Proxy 部署和设置服务治理端点,进行分层治理,如图 9.8 和图 9.9 所示。


 

 


image.png



图
9.9


相关文章
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
2831 10
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
1125 4
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
4062 37
微服务架构解析:跨越传统架构的技术革命
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
1871 0
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
980 12
JeecgBoot架构图 ● 技术架构图 ● 系统架构图
JeecgBoot架构图 ● 技术架构图 ● 系统架构图
1057 12
|
监控 Cloud Native Java
基于阿里云容器服务(ACK)的微服务架构设计与实践
本文介绍如何利用阿里云容器服务Kubernetes版(ACK)构建高可用、可扩展的微服务架构。通过电商平台案例,展示基于Java(Spring Boot)、Docker、Nacos等技术的开发、容器化、部署流程,涵盖服务注册、API网关、监控日志及性能优化实践,帮助企业实现云原生转型。
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
搜索推荐 NoSQL Java
微服务架构设计与实践:用Spring Cloud实现抖音的推荐系统
本文基于Spring Cloud实现了一个简化的抖音推荐系统,涵盖用户行为管理、视频资源管理、个性化推荐和实时数据处理四大核心功能。通过Eureka进行服务注册与发现,使用Feign实现服务间调用,并借助Redis缓存用户画像,Kafka传递用户行为数据。文章详细介绍了项目搭建、服务创建及配置过程,包括用户服务、视频服务、推荐服务和数据处理服务的开发步骤。最后,通过业务测试验证了系统的功能,并引入Resilience4j实现服务降级,确保系统在部分服务故障时仍能正常运行。此示例旨在帮助读者理解微服务架构的设计思路与实践方法。
1213 17