干货文:企业 IT 基础架构|(精华篇)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
对象存储 OSS,20GB 3个月
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 干货文:企业 IT 基础架构|(精华篇)

所有的架构师,他们心里都有一张架构大蓝图,这是他们从全局视角来设计系统架构,然后再合理申请、安排相应的资源来落地实现,最终为企业实现降本增效。


在初期规划中,需要做什么,在什么时机、什么阶段、什么时间,需要做什么系统,从 0 到 1 把基础架构搭建起来,为后面的业务提供基础服务和组件。大体上,比较符合中小公司的实际应用。

1、开发框架

大多数同学,接触的都是业务开发,关注的最多就是开发框架这一层。站在基础架构部的角度来看,需要为业务开发的同学提供相应的开发框架,比如支持他们的 RPC(远程调用)。

我们会把业务架构,简单地做个分层,包含网关层、业务逻辑层和数据访问层。业务的各种微服务、各种组合,都是按角色的分层去做,后面再细说,这里只需了解分层架构方式的初衷即可。

1.1 网关

概念:网关作为系统唯一对外的入口,是客户端和服务器之间的中间层,主要提供路由请求、鉴权、监控、缓存、限流等功能。就跟演唱会安检查票一样,像之前张学友的演唱会,每场都能抓到几个在逃的嫌疑犯,也就是在网关(安检)的时候就识别到他啦。

核心功能:

  • 统一接入:智能路由,AB 测试,灰度测试,负载均衡,容灾处理,日志埋点;
  • 智能路由,其实就是根据用户的请求路径,来请求对应的服务;
  • AB 测试,通过对比试验,收集数据,最后分析、评估,根据实际效果确定哪个是更好的选项;
  • 灰度测试,指定部分资源进行测试,逐步扩大其试用者数量,以便及时发现和纠正其中的问题;
  • 负载均衡,就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,缓解访问压力;
  • 容灾处理,缓解压力过大的节点,分发到压力较小的节点服务上;
  • 日志埋点,获取每日访问量,服务调用的时间。
  • 流量监控:限流处理,服务降级等;
  • 限流处理,担心访问量过大,造成服务层压力太大。有时候某活动太火爆,在一开始的时候,接口访问量剧增;还有一些恶意用户或机器人刷接口,所以就要通过很多方式去限流处理,要不就会被访问爆;
  • 服务降级,主要是在服务器压力激增时,根据实际业务情况,对一些服务和页面,采取有策略地不处理,或其他简化方式进行处理,进而释放服务器资源,来保证核心功能顺利、高效运行。
  • 安全防护:鉴权处理,监控等,机器网络隔离;
  • 鉴权处理,是指验证用户是否拥有访问系统的权利,一般有四种方式,HTTP Basic Authentication、session-cookie、Token 验证、OAuth(开放授权);
  • 监控,API 网关的监控支持查看 region(地域)、分组、以及 API 的监控图表,监控图表的指标主要包含请求数、流量、延时、HttpStatusCode;
  • 机器网路隔离,主要是网关通过内网来对服务进行交互,对用户请求外网 IP 交互。

1.2 业务逻辑层

概念:业务逻辑层(Business Logic Layer)是系统架构中体现核心价值的部分。它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也就是说它是与系统所应对的领域(Domain)逻辑有关,很多时候,也将业务逻辑层称为领域层。

核心功能:

  • 承上启下:业务逻辑层在体系架构中的位置很关键,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用;
  • 可抽取、可替换:由于层是一种弱耦合结构,层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计对于其调用的底层而言没有任何影响。如果在分层设计时,遵循了面向接口设计的思想,那么这种向下的依赖也应该是一种弱依赖关系。因而在不改变接口定义的前提下,理想的分层式架构,应该是一个支持可抽取、可替换的“抽屉”式架构;
  • 可扩展支持:正因为如此,业务逻辑层的设计对于一个支持可扩展的架构尤为关键,因为它扮演了两个不同的角色。对于数据访问层而言,它是调用者;对于表示层而言,它却是被调用者。依赖与被依赖的关系都纠结在业务逻辑层上,如何实现依赖关系的解耦,则是除了实现业务逻辑之外留给设计师的任务。

1.3 数据访问层

概念:简单的说法就是实现对数据表的 Select(查询),Insert(插入),Update(更新),Delete(删除)等操作。如果要加入 ORM 的元素,那么就会包括对象和数据表之间的 Mapping,以及对象实体的持久化。

核心功能:

  • DAL:数据访问层,简单的说,就是通过 DAL 对数据库进行的 SQL 语句等操作;
  • 主要职责:读取数据和传递数据。

2、平台

主要是为业务开发、业务快速迭代提供更多功能、更多基础设施和更多基础能力。

2.1 服务管理平台 Manager

概念:服务管理平台,是将基于服务技术、组件式开发的、独立运行的服务进行统一的接入、统一管理、统一调度,实现异构服务间集成与管理,最终实现所有运行中的服务可以有序、正常、持续的运转。

核心功能:

  • 快捷部署:将服务按功能、行为归类为响应独立的功能服务,每个服务都可以独立部署运行,然后对外提供统一的服务API接口,灵活的服务配置能快速满足、交付用户的需求;
  • 服务管理支撑:根据不同的产品模块,可以实现服务的注册、服务依赖关系的管理、服务的资源目录、服务器路由等功能,同时也能实现服务的计量功能,做到更全方位的服务统一管理功能;
  • 一致服务调用:可对接入的服务的运行作统一的管理,根据服务的调用关系,实现服务运行过程中的降级、熔断等调度功能,最终达到服务能有序、高效、正常的运行。

2.2 请求跟踪平台 Trace

核心功能:链路追踪组件通过在微服务应用中以代码侵入或者非侵入的方式进行数据表示、埋点、传递、收集、存储、展示等技术手段,达到将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。

2.3 日志查询平台 Log

核心功能:

  • 保留现场,排查相关问题;
  • 根据已有状态,预估即将可能会发生的问题;
  • 数据商业化运作;

2.4 配置中心 Config

核心功能:集中化地管控配置文件,我们模块的配置文件,自己去维护非常麻烦,提供一个平台级的组件去支持在上面去维护配置项,像添加、修改、删除等,就不用再登录物理机了。

2.5 立体监控平台 Monitor

核心功能:微服务拆分,我们模块从一个变多个、变成百上千个,对服务的治理、监控、管控就要非常严格了,要不出了问题都不知道。所以需要立体化的监控平台,也就是监控的维度多、视角全,可以从多个维度、多个视角把整个系统的各种情况监控起来,不仅能监控进程,还能监控服务器、机器、集群、调用等等。

2.6 消息中心 MQ

核心功能:在调用的时候,光有 RPC 不行,有时候还需要纯异步的交互。

2.7 任务调度平台 Job

核心功能:任务调度系统是数据平台的核心组件,在日常的数据处理中,定时运行一些业务很重要,比如定时从数据库将新增数据导入到数据平台,将数据平台处理后的数据导出到数据库或者是文件系统。任务调度系统负责一个任务何时运行,何时结束以及正确的处理任务之间的依赖关系,流程的正确性是核心。还有一种资源调度系统,它更关注系统物理资源的分配,例如 CPU、内存等的使用,系统资源的最大化利用才是核心。

2.8 注册中心 Register

核心功能:当 RPC 调用越来越多,就需要更灵活、更好的、更优雅的服务发现、服务注册机制。

3、基础组件

3.1 分布式事务中间件 Transaction

核心功能:主要是“最终一致性”的解决方案。

具体场景:

  • 业务垂直拆分多个模块,每个模块使用不同的数据库(有可能数据库类型都不一致),而一个业务横跨多个业务模块。如电商业务里下单时付款、库存扣减和积分发放服务等,以及付款时涉及到的交易、支付和帐务多个数据库等。
  • 数据库水平拆分后,业务事务涉及到多个数据分片。如 A 给 B 转账业务,A 和 B 的帐务数据在不同的分库上。

3.2 数据库中间件 JDBC

核心功能:数据库中间件的主要作用是向应用程序开发人员屏蔽读写分离和分库分表面临的挑战,并隐藏底层实现细节,使得开发人员可以像操作单库单表那样去操作数据。

4、存储层

4.1 固化 KV 存储 KV

核心功能:Redis 是一个 key-value 存储系统,它和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和 hash(哈希类型)。这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis 支持各种不同方式的排序。与 Memcached 一样,为了保证效率,数据都是缓存在内存中。区别的是 Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave(主从)同步。

4.2 固化关系存储 MySQL

核心功能:MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

4.3 NewSQL 数据库 TiDB

核心功能:TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。

4.4 缓存系统 Codis

核心功能:Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别(不支持的命令列表),上层应用可以像使用单机的 Redis 一样使用,Codis 底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,对于前面的客户端来说是透明的,可以简单的认为后边连接的是一个内存无限大的 Redis 服务。

4.5 对象存储

核心功能:对象存储,也称为“面向对象的存储”,是用来描述解决和处理离散单元的方法的通用术语,这些离散单元被称作为对象。英文是 Object-based Storage。现在很多云厂商,也直接称之为“云存储”。例如,阿里云把自家的对象存储服务叫做 OSS,华为云叫 OBS,腾讯云叫 COS,七牛叫 Kodo,百度叫 BOS,网易叫 NOS。

5、基础服务

5.1 短域名服务 Tinyurl

核心功能:主要是解决了三大问题。首先,链接变短,在对内容长度有限制的平台发文,可编辑的文字就变多了。其次,我们经常需要将链接转成二维码的形式分享给他人,如果是长链的话二维码密集难识别,短链就不存在这个问题了。最后,链接太长在有些平台上无法自动识别为超链接。

5.2 即时通讯服务 IM

核心功能:即时通讯(Instant Messaging)是目前最为流行的通讯方式,各种各样的即时通讯软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。

5.3 推送服务 PUSH

核心功能:推送技术的基础思想是将浏览器主动查询信息改为服务器主动发送信息。 服务器发送一批数据,浏览器显示这些数据,同时保证与服务器的连接。当服务器需要再次发送一批数据时,浏览器显示数据并保持连接。以后,服务器仍然可以发送批量数据,浏览器继续显示数据,依次类推。

6、运维支撑

6.1 资产管理平台 CMDB

核心功能:一般通过一物一码技术(条形码、二维码等)对资产实物从购置、领用、清理、盘点、借用归还、维修到报废进行全方位准确监管,结合资产分类统计等报表真正实现帐物相符。

6.2 发布系统 Publish

核心功能:信息发布系统,由服务器、网络、播放器、显示设备组成,将服务器的信息通过网络(广域网/局域网/专用网都适用,包括无线网络)发送给播放器, 再由播放器组合音视频、图片、文字等信息(包括播放位置和播放内容等),输送给终端显示设备可以接受的音视频输入形成音视频文件的播放,这样就形成了一套可通过网络将所有服务器信息发送到终端。

6.3 工单系统 Order

核心功能:工单系统分为两大类:一是企业内部部门工作任务传达的系统;二是专门用于售后安装维修类的系统,这种是把工单派给外勤人员上门去维护的软件。用于记录、处理、跟踪一项工作的完成情况。

6.4 虚拟化平台 Docker

核心功能: 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种 实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结 构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资 源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟 化资源包括计算能力和资料存储。

在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的 硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件 物理资 源的充分利用虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化、桌面虚拟化、服务虚拟化、虚拟机等等。

7、MIS 支撑

7.1 权限管理系统 Auth

核心功能:

  • 控制力度来看,可以将权限管理分为两大类:
  • 功能级权限管理;
  • 数据级权限管理。
  • 从控制方向来看,也可以将权限管理分为两大类:
  • 从系统获取数据,比如查询订单、查询客户资料;
  • 向系统提交数据,比如删除订单、修改客户资料。

7.2 用户认证系统 SSO

核心功能:在企业信息应用上不同的服务由不同的系统提供,但是这些服务仍提供给某些特定系统的特定用户,并且出于应用系统安全上的需要,每一个系统都需要对用户的身份进行认证和对其用户所访问的系统功能进行授权,应用系统在用户管理上基本上都自成体系,以保证合法用户的权益。


相关实践学习
基于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
目录
相关文章
|
1天前
|
Cloud Native 持续交付 云计算
构建未来:云原生架构在现代企业中的应用与实践
【5月更文挑战第25天】 随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云原生技术以其独特的弹性、可扩展性和敏捷性,成为推动企业技术创新的重要力量。本文将深入探讨云原生架构的核心概念,分析其在现代企业中的应用实例,并提出实施策略和最佳实践,以助力企业在激烈的市场竞争中占据先机。
|
3天前
|
存储 SQL 分布式计算
企业数仓架构设计实践
本文是一位数据架构师在设计企业级数据仓库架构时的思考与实践经验分享。从理论基础(数据仓库概念、Lambda架构、Kimball与Inmon方法)到工具选型(如Hadoop、Hive、Spark、Airflow、Tableau等),再到实践过程(需求调研、架构设计、技术选型落地、数据模型设计、测试迭代及用户培训),全面阐述了数仓建设的各个环节。强调了业务理解与技术结合的重要性,并指出数仓建设是一个持续优化、适应业务发展变化的过程。
|
5天前
|
运维 Cloud Native 持续交付
构建未来:云原生架构在企业转型中的关键角色
【5月更文挑战第21天】 随着数字化转型的浪潮席卷全球,企业正面临前所未有的挑战与机遇。本文深入探讨了云原生架构如何成为推动企业敏捷性、可扩展性和创新能力的核心动力。通过分析云原生技术的基本原理及其在各行各业中的应用案例,揭示了该技术如何助力企业实现资源优化、加快产品上市时间以及提高服务质量。文章旨在为企业决策者和技术实践者提供洞见,以便更好地理解和应用云原生架构,从而在竞争激烈的市场中保持领先地位。
|
5天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在现代企业中的应用与实践
【5月更文挑战第21天】 随着数字化转型的加速,企业对于敏捷性、可扩展性和成本效益的需求日益增长。云原生技术以其独特的优势应运而生,成为推动企业IT架构现代化的重要力量。本文将深入探讨云原生架构的核心概念、关键技术以及如何在企业中实施云原生解决方案,以实现真正的弹性、自动化和持续交付。
|
11天前
|
Cloud Native 安全 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【5月更文挑战第12天】 随着数字化转型的浪潮不断冲击传统IT架构,企业亟需灵活、高效且可扩展的技术解决方案以保持竞争力。云原生技术作为一种新兴的系统构建方式,以其独特的弹性、微服务和持续交付等特性,成为推动企业快速响应市场变化的关键因素。本文将深入探讨云原生架构的核心组件,分析其如何促进企业的敏捷性,以及在实施过程中可能遇到的挑战和解决策略,为企业采纳云原生技术提供参考。
|
11天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【5月更文挑战第11天】 随着数字化转型的深入,企业对技术的敏捷性、可扩展性和成本效益提出了更高的要求。云原生架构作为一种新兴的设计理念和实践方法,正逐渐成为推动企业技术革新的关键力量。本文将深入探讨云原生架构的核心组件,包括容器化、微服务、持续集成/持续交付(CI/CD)以及DevOps文化,并分析它们如何共同作用于企业的IT基础设施,实现灵活、高效的运营模式。同时,我们也将识别在采纳云原生技术时面临的主要挑战,并提出相应的解决策略,以帮助企业顺利过渡到云原生时代。
|
11天前
|
运维 Cloud Native 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【5月更文挑战第9天】 随着数字化转型的浪潮席卷全球,企业正迅速采纳云原生技术以实现敏捷性、可扩展性和弹性。本文深入探讨了云原生架构的关键组件,包括容器化、微服务、持续集成/持续部署(CI/CD)和DevOps文化,并分析了这些技术如何帮助企业加速产品上市时间,提高运营效率,并最终实现业务目标。同时,文章也识别了企业在采纳云原生实践中可能面临的挑战,如安全性考量、团队技能提升和复杂的网络管理,并提出了相应的解决方案和最佳实践。
|
11天前
|
弹性计算 Cloud Native 安全
云原生架构的未来展望:如何引领企业转型与创新
【5月更文挑战第7天】随着云计算技术的不断发展,云原生架构已经成为企业数字化转型的关键驱动力。本文将深入探讨云原生架构的优势、挑战以及未来发展趋势,为企业提供一种全新的技术视角,以实现更高效、灵活和可扩展的业务运营。
|
11天前
|
监控 负载均衡 API
微服务架构在现代企业中的应用与挑战
微服务架构已成为现代企业构建灵活且可扩展软件系统的首选。然而,随着其应用的普及,企业也面临着一系列新的挑战。本篇文章将探讨微服务架构的优势、实施时遇到的问题以及解决这些问题的策略。
|
11天前
|
Cloud Native 安全 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【5月更文挑战第1天】 随着数字化转型的深入,云原生技术以其灵活性、可扩展性和敏捷性成为现代企业IT架构的核心。本文将探讨云原生架构的关键组件,包括容器化、微服务、持续集成/持续部署(CI/CD)以及DevOps实践,并分析它们如何共同塑造企业的运营模式。同时,文章还将讨论在采纳云原生过程中企业可能遇到的挑战,如安全性问题、技术复杂性以及组织文化的转变,并提出应对策略。
34 8