程序员整体架构之基础架构-程序员宅基地

技术标签: 架构  Java程序员进阶学习之路  基础架构  

基础架构


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 课程 孙玄 陈东

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chentian114/article/details/122611380

智能推荐

UML类图及其关系_uml类图的关系-程序员宅基地

文章浏览阅读1.6k次。在UML类图中, 常见的关系有一下几种: 泛化(Generalization), 实现(Realization), 关联(Association), 聚合(Aggregation), 组合(Composition), 依赖(Dependency).示例类图请看下面的类图车的类图结构为abstract,表示车是一个抽象类;它有两个继承类:汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示;通常用来表示接口的实现;汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空_uml类图的关系

css选择器包含内容,CSS 包含选择器-程序员宅基地

文章浏览阅读1.2k次。包含选择器包含选择器也叫派生选择器,顾名思义,是一种具有包含关系的选择。多个选择器以空格分开,组合成包含关系,且右边的选择器从属于左边(即右边的选择器只能在左边的选择器范围内选择)。一个包含选择器的应用示例:#nav a{text-decoration: none;}这个例子表示对“id="nav"”的元素里面的超链接应用该样式(超链接取消下划线),而其他网页元素的超链接不受影响。包含选择器是常用..._包含选择器

西科大c语言题库,科大C语言每章节上机习题-程序员宅基地

文章浏览阅读128次。该楼层疑似违规已被系统折叠隐藏此楼查看此楼1.输入4个不同的数,将它们从大到小排序。(使用循环语句)#include"stdio.h"voidswap(int&a,int&b){intt;t=a;a=b;b=t;}voidmain(){intnum[4];printf("输入四个整数(以空格分隔):");scanf("%d%d%d%d",&num[0],&a..._西南科技大学c语言机考

VC6.0 error LNK2001: unresolved external symbol __imp__ntohl@4-程序员宅基地

文章浏览阅读282次。--------------------Configuration: oxToint1 - Win32 Debug--------------------Linking...main.obj : error LNK2001: unresolved external symbol __imp__ntohl@4Debug/oxToint1.exe : fatal error LNK1120: 1 ..._unresolved external symbol __imp__ntohl@4

解决redhat忘记root密码的问题_虚拟机redhat密码忘了咋办-程序员宅基地

文章浏览阅读1.8w次,点赞7次,收藏35次。redhat密码忘记了怎么办,不要谎,看接下来的解决办法可以轻松解决1.首先需要进去到登陆界面,然后点击右上角的Restart 2.重启后进入开机界面选择内核的时候按e然后进入下图这个界面3.用键盘上的下键移动到最底部删除如图fi下两行 ro 后的所有内容,然后添加rw rd.break ,然后按ctrl +x4.后进入到以下的界面5.输入以下命令..._虚拟机redhat密码忘了咋办

SpringMVC 的工作原理_springmvc的工作原理-程序员宅基地

文章浏览阅读100次。SpringMVC 的工作原理a. 用户向服务器发送请求,请求被 springMVC 前端控制器 DispatchServlet 捕获;b. DispatcherServle 对请求 URL 进行解析,得到请求资源标识符(URL),然后根据该 URL 调用 HandlerMapping将请求映射到处理器 HandlerExcutionChain;c. DispatchServlet 根据获得..._springmvc的工作原理

随便推点

mybatis中if判断的坑_mybaties中if-程序员宅基地

文章浏览阅读3.1k次。最近在项目使用mybatis中碰到个问题Xml代码 if test="type=='y'"> and status = 0 if> 当传入的type的值为y的时候,if判断内的sql也不会执行,抱着这个疑问就去看了mybatis是怎么解析sql的。下面我们一起来看一下mybatis 的执行过程。DefaultSqlSession.c_mybaties中if

Java 基础系列(十六) --- Java中模板引擎的使用_java模板引擎-程序员宅基地

文章浏览阅读6.4k次,点赞4次,收藏6次。Java 中的模板引擎的使用_java模板引擎

【算法】快速排序与归并排序对比_快速排序和归并排序区别-程序员宅基地

文章浏览阅读5.3k次,点赞12次,收藏29次。算法 系列博客、一、时间复杂度、二、空间复杂度、三、排序稳定性、三、局部有序与整体有序、_快速排序和归并排序区别

Android开发初级00_1有关Toast和Menu的知识点-程序员宅基地

文章浏览阅读398次。Toast和Menu的使用 Toast的使用.java文件<(直接在java文件中就可以使用)/b> /*按钮一的作用*///提示一个个点击事件 Button button1 = (Button) findViewById(R.id.button_1); button1.setOnClickListener(new View.OnClickListe_menu的知识点

react radar_RADAR的完整形式是什么?-程序员宅基地

文章浏览阅读175次。react radar 雷达:无线电探测和测距 (RADAR: Radio Detection And Ranging)RADAR is an abbreviation of Radio Detection And Ranging. It is an electronic device which detects objects by using ultra-high frequency or ..._radar-radar

jQuery aiax 无刷新提交表单_jquery 无刷新提交表单-程序员宅基地

文章浏览阅读1.1k次。jQuery Ajax 代码:_jquery 无刷新提交表单