程序员整体架构之基础架构
基础架构
文章目录
- 基础架构
- 简介
- 开发框架
- 平台
- 基础组件
- 存储层
- 基础服务
- MIS支撑
- 运维支撑
- 公众号
- 参考
简介
这是我们去围绕业务去打造基础架构部,去做各种基础组件和各种平台的一个过程。包括:平台、基础组件、存储层、基础服务、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
公众号
参考
奈学教育 Java 架构 P7 课程 孙玄 陈东
程序员整体架构之基础架构相关推荐
- Java程序员如何成为优秀的架构师
怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到的问题. ...
- 零架构项目经验的程序员,如何升级成架构师
先说目前关于架构师的一些是实际情况. 1 要成为Java架构师,单纯靠学知识一定不行,得靠在项目里积累经验. 2 如何判断程序员是否已经成为java架构师?不是看程序员掌握的技能,更不是看程序员干的活 ...
- 30kJava程序员升为全栈架构师的晋升之路
当下当一个Java程序员是有前途的,你对这句话不持反对的意见吧.Java作为市场上最流行.应用最广泛的编程语言之一,当下学Java成为一个Java程序员当然是有前途的.但是作为一个Java程序员,也有 ...
- 5分钟弄懂程序员的如何升级到架构师。
对我们程序员来说,发展的途径要么是走管理岗,从开发升级到项目经理甚至是部门经理:要么走技术升级路线.不过在技术路线方面,无法升级到架构师的程序员不在少数.一方面,在不少公司的高级开发岗位上,无法让程序 ...
- GPU Saturday技术沙龙:OpenCL程序员眼中的下一代APU架构
摘要:GPU Saturday技术沙龙在北京·3WCoffee成功举办.本次活动邀请AMD资深技术人员及清华大学项目研究员就AMD最新的GCN架构.GPU加速计算在挖掘比特币.典型图像算法.深度神经网 ...
- 程序员好几年才能成为架构师_成为更好的企业架构师
程序员好几年才能成为架构师 企业架构师似乎越来越多地参与"尝试新事物"或推翻技术或实施建议(否定命令),而不必费劲或无需编写任何代码. 我已经在很多地方观察到了这一点,无论是与建筑 ...
- 黑马程序员最新版JavaWeb基础教程-学习笔记
da@黑马程序员最新版JavaWeb基础教程-学习笔记 day06-HTML&CSS HTML HTML(HyperTest Markup Language):超文本标记语言 是一门语言,所有 ...
- 后端程序员必备的 Linux 基础知识
后端程序员必备的 Linux 基础知识 原文来自github stars>63k的项目JavaGuide,欢迎小伙伴去支持原作者 一 从认识操作系统开始 1.1 操作系统简介 1.2 操作系统简 ...
- 程序员c语言基础,《软考程序员》C语言基础
程序员(英文Programmer)是从事程序开发.维护的专业人员.一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国.软件从业人员分为初级程序员.高级程序员.系统分析员 ...
- 架构漫谈:业务架构、应用架构与基础架构
软件开发就是把一个复杂的问题分解为一系列简单的问题,再把一系列简单的解决方案组合成一个复杂的解决方案.而软件开发中最大的挑战,就是即能够快速高效地针对需求.环境的变化做出改变,也能够持续提供稳定.高可 ...
最新文章
- 机器学习Basics-第九期-CNN卷积神经网络详解
- [以太坊源代码分析] I.区块和交易,合约和虚拟机
- ora-04021 无法锁表的解决办法
- boost::math::tools::sum_series用法的测试程序
- Jenkins发布PHP项目之一自动化部署
- 【笔试/面试】—— linux 拾遗(一)
- pandas—pd.DataFrame.sample
- 计算机代码大全,电脑运行代码大全
- AD7124的调试总结
- 开发java超级玛丽的素材_超级玛丽完整素材
- 电脑安装android系统 锤子,锤子系统手机桌面
- 禅与摩托车维修艺术_摩托车与编程之禅
- Linux中使用grep -v grep 查找不含有 grep 字段的行
- 信号完整性分析5——信号上升时间
- 服务进程无法连接到服务控制器上_魔兽世界 无法连接服务 暴雪游戏agent进入睡眠模式。。。。...
- 未来十年互联网十大发展趋势
- c# 与 Access数据库 dataset操作
- excel文件打开密码如何找回
- 车品觉-《决战大数据》
- python画图中的几个小技巧