程序员整体架构之基础架构

基础架构


简介

这是我们去围绕业务去打造基础架构部,去做各种基础组件和各种平台的一个过程。包括:平台、基础组件、存储层、基础服务、MIS支撑、运维支撑。

开发框架

    首先,开发框架包括:网关、业务逻辑层、数据访问层; 网关、业务逻辑层、数据访问层这块是对业务模块的水平拆分,分成三层;当然也会有垂直拆分,因为整个是一个微服务系统,但是从它的角色来说,模块基本上是分成这三种:网关、业务逻辑层、数据访问层; 各模块之间肯定会进行调用,用户请求 -> 网关 -> 业务逻辑层 -> 数据访问层 -> DB ;这些调用其实就是 RPC 调用; 业务要能跑起来最核心的就是 RPC框架的支持; RPC是由基础架构部维护的; 实际上基础架构部的所有工作都是围绕业务去展开的;为什么这么说,先看平台部分;

平台

这样通过平台组件,可以很好的支撑了业务。

基础组件

到后面,我们还会有 分布式事务中间件(Transation)、数据库中间件(JDBC);

都是为了提供给业务,让业务能够更快速的完成开发;

存储层

    刚说到,开发框架的 数据访问层 做什么事呢:代理存储服务的访问; 固化存储 MySQL 早期只需要 关系型数据库 Mysql 就够了; 缓存系统 Codis 逐渐业务越来越多样,对存储的需求也越来越多样化,比如 缓存 Redis;单机的 Redis 如果不够了,就有 Redis 的分布式解决方案 Codis ; 固化KV存储 KV 随着数据模型的扩展,不一定非要用关系型数据库,可以是 KV 存储;固名思义即按键值对的方式存储,这样数据存起来更简单,效率更高; NewSQL 数据库 TiDB 我们在用 关系型数据库 MySQL ,都遇到过 分库分表 ,单机搞不定了,没办法只能 分表或者分库;这样又有新的问题:怎么分、分完后怎么路由、可能还会有分布式事务等;很费劲; 如果不想分表,又想扩展性比较好,可以用 KV,但KV的问题在于,它不支持 Mysql 这种SQL查询;因此就有了 NewSQL ; 简单可以理解为 关系型数据库 和 KV存储 两者加在一起了,存储量可以横向扩展,还支持 SQL 查询;这样既可以当 Mysql 用,还不需要做分库分表; 但它不能解决所有场景,只能选择适用的场景去使用。

这块我们就将存储体系建立好了;

平台 + 基础组件 这两块建好,基础组件和中间件就建立好了;基础服务这部分不是重点;

基础服务

    即时通讯服务 IM 推送服务 PUSH 短域名服务 Tinyurl 域名太长很不友好,先把长域名转成短域名,服务做一个映射;有请求过来,将其重定向到原始的域名上;

这些是一些基础服务,包括 IP 定位、坐标定位等都可以在这一块。

这些功能的部分都有了,接下来还会有 单点登录等。

MIS支撑

    用户认证系统 SSO 有这么多平台,不可能访问每一个都需要登录一次,但每个平台肯定都是有用户权限的;这样就需要一个 登录系统,登录一个,其它的都可以使用; 权限管理系统 Auth

这部分是为我们的系统服务。

一部分是为我们的系统服务,一部分是为我们的业务服务;这样整个系统建立起来,相当于一个公司的一个完整技术架构;有什么东西,基本都在这些里面涵盖到了;

这样业务就会相对轻松一些,它只负责把自己的事做好就可以了;

平台、存储层、基础组件、基础服务、MIS支持,以及 运维支撑,这些谁来做?这些都可以属于是基础架构的工作。

运维支撑

    资产管理平台 CMDB 发布系统 Publish 工单系统 Order 虚拟化平台 Docker

参考

奈学教育 Java 架构 P7 课程 孙玄 陈东

经验分享 程序员 微信小程序 职场和发展