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

基础架构

文章目录

  • 基础架构
    • 简介
    • 开发框架
    • 平台
    • 基础组件
    • 存储层
    • 基础服务
    • MIS支撑
    • 运维支撑
    • 公众号
    • 参考

程序员整体架构之基础架构_第1张图片

简介

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

开发框架

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

平台

  • 消息中心MQ
    • 业务RPC调用 提供了同步调用方式,随着业务的发展我们需要更多样的调用方式;
    • 最明显的就是 MQ ,所以在合适的时机,引入 MQ ,为业务提供异步调用的方式;
  • 监控平台 Monitor
    • 接下来,模块多了,我们需要提供监控平台,监控线上各个模块、各个机器它的运行情况,访问量多少、有多少超时、多少异常、CPU负载、磁盘负载;
    • 这也是为业务平台服务的;
  • 配置中心
    • 再往下,逐步有了配置中心,因为模块多了,靠本地管理配置文件,太麻烦了,而且效率太低了,所以有了配置中心,统一管理线上的配置;
    • 这是一个平台化的产品;
  • 日志查询平台 Log
    • 还有,统一的日志分析查询平台,可以分析线上的日志;
  • 请求跟踪平台 Trace
    • 请求跟踪平台 相当于 APM ,智能管理工具;(Application Performance Monitor(APM)应用性能监控,当然也有叫 Application Performance Management ,应用较广的开源方案有:Pinpoint 、SkyWalking 、Zipkin);
    • 相对于传统的监控软件(Zabbix等)的区别,APM 更关注在对于系统内部执行、系统间调用的性能瓶颈分析,这样更有利于定位到问题的具体原因,而不仅仅像传统监控软件一样只提供一些零散的监控点和指标,就算告警了也不知道问题是出在哪里。
  • 任务调度平台 Job
    • 线上有很多离线任务,也是做一些实际业务功能的,只是它不扛线上流量,它做一些数据相关的事;
  • 这些都是 围绕着业务,为业务提供服务的;(都是为业务服务的)
  • 服务管理平台 Manager
    • 到后面,我们对服务治理有要求了,于是有了服务管理平台;
    • 实现线上的各种容错、流量控制等;

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

基础组件

到后面,我们还会有 分布式事务中间件(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

公众号

知行chen

参考

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

你可能感兴趣的:(Java程序员进阶学习之路,架构,架构,基础架构)