基础架构组件选型及服务化

本文涉及的产品
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
云原生内存数据库 Tair,内存型 2GB
简介: 【8月更文挑战第22天】本文概述了分布式系统中常见的基础架构组件及其选型与服务化的重要性。

1、常见的分布式基础架构组件

  • 分布式服务化框架,业界开源产品比如 Dubbo、Spring Cloud 这样的框架;
  • 分布式缓存及框架,业界如 Redis、Memcached,框架如 Codis 和 Redis Cluster;
  • 数据库及分布式数据库框架,这两者是密不可分的,数据库如 MySQL、MariaDB 等,中间件如淘宝 TDDL(现在叫 DRDS)、Sharding-JDBC 等。当前非常火热的 TiDB,就直接实现了分布式数据库的功能,不再额外选择中间件框架;
  • 分布式的消息中间件,业界如 Kafka、RabbitMQ、ActiveMQ 以及 RocketMQ 等;
  • 前端接入层部分,如四层负载 LVS,七层负载 Nginx 或 Apache,再比如硬件负载 F5 等。

上面是几类主要的基础架构组件,为了便于理解以开源产品举例。但在实际场景中,很多公司为了满足业务上的个性化需求,会自己研发一些基础组件,比如服务化框架、消息中间件等,这个情况在有一定技术实力的公司里比较常见。不过大部分情况下,会基于这些开源产品做一些封装或局部的改造,以适应我们的业务。

2、基础架构组件的选型问题

大概都会遇到同样的问题,是自研还是选择开源产品?有这么多的开源产品到底该选哪一个?

从单纯的技术选型上来看,选择什么语言并没有严格的标准。而且在技术团队中,也应该鼓励技术多样性和尝试新技术。不过这里要有个度,假设没有统一标准的约束会带来什么问题。

1.开发层面

业务开发同学将大量的精力投入到基础组件和开源产品的研究、研发以及规模化之后的运维上,再加上产品形态的不统一,导致需要在技术层面的协作上做大量适配工作,而且经验还无法互通。

好不容易在一个产品上摸索了很长时间,踩了很多坑,积累了宝贵的经验,结果发现另外一个产品也要经历同样的一个过程,积累的经验依然不能互通和传递。

2.运维层面

当我们考虑建设一个统一的效率和稳定体系时,发现基础组件不统一,这个时候就需要做大量的针对不同组件的适配工作。

比如我们要在发布系统中做服务上下线处理,就要针对多个微服务化框架做适配。再举个稳定性上全链路跟踪的例子,为了在分布式复杂调用场景下的链路跟踪和问题定位,我们会在服务化框架中统一做打点功能,这样才不需要侵入业务逻辑。

就这样一个工作,如果服务化框架不统一,就需要到每个框架里都去开发一遍。不过现实中遇到的实际问题是,整个链路就是会有这样那样的情况而串联不起来。

同时还会出现维护投入不足,那就必然导致故障频发等一系列问题,团队内部也会因为问题定位不清楚而形成扯皮推诿的不良氛围。

所以,这个时候我们需要做的,就是对基础架构有统一的规划和建设。原则上,每种基础组件只允许一种选型,至少就能满足 90% 甚至更多的应用场景。

3、基础架构的服务化

对基础架构组件做了统一标准之后,下一步要做的就是服务化。因为这些组件都只提供了简单的维护功能,还有很多都是命令行层面的维护,这时要做的就是把这些组件提供的维护 API 进行封装,以提供更加便捷的运维能力。

以 Redis 缓存为例。

  • 创建和容量申请;
  • 容量的扩容和缩容,新增分片的服务发现及访问路由配置;
  • 运行指标监控,如 QPS、TPS、存储数据数量等等;
  • 主备切换能力等等。

以上这些,假设都依赖 Redis 提供的原生能力来做,基本是不可维护的。所以必须要基于这些原生能力进行封装,结合运维场景,将能力服务化,这样就大大提升了使用方的便利性。

要做的事情,可以归纳为两步:第一步是基础架构标准化,第二步是基础架构服务化。

运维必须要有意识去做的两件事情。

  1. 参与制定基础架构标准,并强势地约束。在这里运维作为线上稳定的 Owner,发挥约束作用有可能会比业务架构师这样的角色更为有效。另外,由于历史原因或其他种种因素造成的已有架构标准不统一的问题,是需要开发和运维共同合作去改造的。这里面如何保持良好的协作,制定统一的路线图也是非常重要的。所以这里强制约束是一方面,同时也要提供工具化的手段来支持开发的改造,也就是下面这个动作。
  2. 基础架构的服务化平台开发,目标是平台自助化,让开发依赖平台的能力自助完成对基础组件的需求,而不是依赖运维的人。这个事情是驱动运维转型和改进的动力,也是运维能够深入了解架构组件细节的有效途径。同时,要注意到,如果不朝着服务化方向发展,运维将始终被拖累在这些基础组件的运维操作上。
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
14天前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
15天前
|
Kubernetes API 调度
Kubernetes 架构解析:理解其核心组件
【8月更文第29天】Kubernetes(简称 K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用。它提供了一个可移植、可扩展的环境来运行分布式系统。本文将深入探讨 Kubernetes 的架构设计,包括其核心组件如何协同工作以实现这些功能。
38 0
|
4月前
|
存储 运维 关系型数据库
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
|
5天前
|
XML Java 数据库
在微服务架构中,请求常跨越多个服务,涉及多组件交互,问题定位因此变得复杂
【9月更文挑战第8天】在微服务架构中,请求常跨越多个服务,涉及多组件交互,问题定位因此变得复杂。日志作为系统行为的第一手资料,传统记录方式因缺乏全局视角而难以满足跨服务追踪需求。本文通过一个电商系统的案例,介绍如何在Spring Boot应用中手动实现日志链路追踪,提升调试效率。我们生成并传递唯一追踪ID,确保日志记录包含该ID,即使日志分散也能串联。示例代码展示了使用过滤器设置追踪ID,并在日志记录及配置中自动包含该ID。这种方法不仅简化了问题定位,还具有良好的扩展性,适用于各种基于Spring Boot的微服务架构。
17 3
|
17天前
|
存储 安全 虚拟化
深入解析:Docker的架构与组件
【8月更文挑战第27天】
110 2
|
18天前
|
JSON 前端开发 API
Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发
Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发
40 2
|
30天前
|
存储 算法 前端开发
JVM架构与主要组件:了解Java程序的运行环境
JVM的架构设计非常精妙,它确保了Java程序的跨平台性和高效执行。通过了解JVM的各个组件,我们可以更好地理解Java程序的运行机制,这对于编写高效且稳定的Java应用程序至关重要。
34 3
|
23天前
|
开发工具 Android开发
Android项目架构设计问题之组件A通知组件B某个事件的发生如何解决
Android项目架构设计问题之组件A通知组件B某个事件的发生如何解决
28 0
|
28天前
|
存储 缓存 Java
Eureka原理与实践:深入探索微服务架构的核心组件
在微服务架构日益盛行的今天,服务之间的注册与发现成为了保证系统高可用性和灵活性的关键。Eureka,作为Netflix开源的服务注册与发现框架,凭借其简单、健壮的特性,在微服务领域占据了举足轻重的地位。本文将深入剖析Eureka的原理,并通过实践案例展示其在实际项目中的应用,以期为开发者提供一个高端、深入的视角。
|
3月前
|
SQL 存储 关系型数据库
深入OceanBase内部机制:系统架构与组件精讲
深入OceanBase内部机制:系统架构与组件精讲
深入OceanBase内部机制:系统架构与组件精讲

热门文章

最新文章