# 《互联网 · 分布式架构》第 1 节:基础内容介绍 背景:在与星球伙伴1v1聊天的时候,遇到很多粉丝没有经历过大厂,并不清楚大厂都使用什么样的开发技术、平台服务、系统上线、运维监控等内容。所以结合粉丝对互联网大厂技术要求等内容的疑问,开始给球友陆续以《互联网 · 分布式架构》的建设背景,陆续像粉丝伙伴介绍在互联网做开发,都会使用到什么技术、遇到哪些问题、怎么解决各种复杂场景的设计,以及618备战、流量洪峰等各项核心内容。 内容:本章节给大家介绍在互联网做开发,基础环境、开发技术以及上线和监控都会用到哪些东西。一般互联网大厂像阿里、京东、腾讯等都会有公司自研的一些技术组件,比如:RPC、MQ、数据库路由等,但所有的这些技术与市面上的同类组件也是有着相同的协议,使用方式在核心内容上并不会有太大区别。所以小傅哥也会以市面上有的技术来填充到给大家梳理的分布式架构中用到的内容上,方便大家可以自行搜索资料以及测试验证。 文档:在互联网大厂,文档是非常重要的一项内容。从产品出PRD、研发设计、代码评审、系统架构以及你的晋升答辩,都会用到编写文档的各项工具。比如:XMind、Visio、PPT等。有些公司也会自行安装一些文档,比如 Conflue 工具:大部分时候无论是否在互联网工作,工具项还是非常相同的,除非你是在一个非常传统的行业,或者说你是跨语言了。这里的工具包括:JDK、IntelliJ IDEA、Navicat、Postman、Xshell、Xftp、Maven、代码库、Git、TortoiseGit等。 技术:这部分内容主要是以你在建设什么样的系统而决定你会用到哪些技术内容,除了最基本的 Spring、SpringBoot、MyBatis、RPC、MQ、Redis这些非常常用的以外,如果你需要用到分库分表,那么会设计到数据库路由组件,在数据库分库分表后又会需要用到数据整合汇总的服务,比如通过Mysql的binlog日志,把数据通过Otter同步到ES中。而这些背景下你可能还会需要用到分布式任务以及分布式事务的组件,但也可以基于MQ做最终一致性。另外在互联网应用开发中,都是采用前后端分离的,这个时候会有服务端把如RPC这样的接口,转换为http服务,但这种转换只需要把RPC接口配置到网关平台即可,而不需要自己处理http开发。另外网关服务上会提供诸如白名单、黑名单、防刷、切量、限流等各种服务治理的能力。当然在给前端的接口上,也会有一些是LVS/F5、Nginx、CDN等各项能力来保障系统的可用度。 数据:在技术层面我们提到了分库分表的Mysql汇总到ES,同时还会有一些如 HBase 等大型数据服务,用于做使用量化模型做数据分析以及生成人群标签等各项内容。 上线:除了一些小公司刀耕火种的上线方式外,还会有像是大公司里非常方便自动化的上线系统,它们的内核开发有的是基于Jenkins,也有一些是自研的,当然还有上云的服务。另外上线后还会有对应的JMeter压测服务和运行日志实时查询服务。 监控:其实关于系统的监控、数据库的监控,都是非常重要的,尤其是对那些业务体量较大、流量较高、有秒杀和大促的业务场景时,就更需要颗粒度更细的监控系统。比如需要知道 TP99、TP999、可用率、响应时长、TPS、QPS等各种指标,来判断服务的整体可用度。另外在数据库层面的监控需要知道当前的IO吞吐量、慢查询、事务、可用连接数、LOAD等综合指标和日常的数据报表。这些都是可以非常方便的反馈出整体服务的可用度。