互联网公司整体架构长什么样?
**业务层**:面向用户的产品矩阵,如App、小程序、Web、开放平台。 **服务层**:把业务拆成可独立部署的微服务,例如订单、支付、用户、内容。 **中间件层**:消息队列、缓存、网关、配置中心、注册中心,负责解耦与加速。 **数据层**:MySQL、Redis、Elasticsearch、Kafka、HBase,按冷热分级存储。 **基础设施层**:K8s集群、CI/CD、IaaS、日志、监控、告警,保障弹性与稳定。 ---画架构图前需要准备什么?
1. **梳理业务流程**:用泳道图把用户从注册到支付的每一步画出来,先让业务同学确认。 2. **盘点技术资产**:列出所有域名、服务、中间件、数据库,用Excel做台账。 3. **确定视图维度**: - 逻辑视图:展示服务之间的调用关系; - 部署视图:展示容器、宿主机、可用区; - 数据视图:展示主从、分片、同步链路。 ---互联网公司技术栈有哪些?
**前端技术栈** - 框架:React、Vue、Angular - 构建:Webpack、Vite、Rollup - 状态管理:Redux、Pinia、Recoil - 跨端:Taro、Uni-app、Flutter Web **后端技术栈** - 语言:Java(Spring Cloud / Dubbo)、Go(Gin / Kratos)、Node.js(NestJS) - 网关:Spring Cloud Gateway、Kong、Nginx Ingress - 安全:OAuth2、JWT、HTTPS双向认证 **数据技术栈** - OLTP:MySQL、TiDB、PolarDB - OLAP:ClickHouse、Doris、StarRocks - 缓存:Redis、Memcached、Tair - 搜索:Elasticsearch、OpenSearch、Solr **中间件技术栈** - 消息:Kafka、RocketMQ、Pulsar - 任务调度:XXL-JOB、Quartz、Airflow - 配置:Apollo、Nacos、Consul - 监控:Prometheus、Grafana、Jaeger **基础设施技术栈** - 容器:Docker、containerd - 编排:Kubernetes、K3s - 镜像仓库:Harbor、ACR、ECR - 流水线:Jenkins、GitLab CI、Argo CD ---如何落地一张可落地的架构图?
**步骤一:画业务大图** 把用户旅程拆成“注册-登录-下单-支付-履约-售后”六段,每段对应一个业务域。 **步骤二:拆微服务** - 订单域:order-api、order-core、order-job - 支付域:pay-api、pay-channel、pay-callback - 用户域:user-api、user-auth、user-profile **步骤三:补充中间件** 在订单与支付之间加一条**Kafka**异步链路,防止高并发拖垮核心接口。 **步骤四:画部署视图** - 可用区A:K8s Master + 2 Worker - 可用区B:K8s 3 Worker - RDS主库在A,从库在B;Redis跨区双活。 **步骤五:加监控** - 业务监控:Prometheus埋点QPS、RT、错误率 - 系统监控:Node Exporter + cAdvisor - 链路追踪:Jaeger采样率设为1‰,避免性能损耗 ---常见疑问快问快答
**Q:小公司需要拆得这么细吗?** A:不需要。先按“用户-商品-订单”三大服务起步,日订单破十万再拆。 **Q:技术栈选型听CTO还是听社区?** A:先对齐业务目标,再让核心团队做POC,跑两周压测后再拍板。 **Q:架构图多久更新一次?** A:每发布一次大版本就更新,平时用Git做版本管理,防止“图不对码”。 ---避坑指南
- **别一次性画全链路**:先画核心交易链路,边缘系统后期补。 - **别忽略数据流向**:箭头方向一定从主到从,防止读扩散。 - **别用PPT画拓扑**:用Draw.io或PlantUML,方便Diff和Review。 - **别把网关画成单体**:把Nginx、Gateway、BFF三层拆开,职责更清晰。 ---示例代码片段:用PlantUML生成微服务图
```plantuml @startuml !define RECTANGLE class RECTANGLE order-api RECTANGLE order-core RECTANGLE pay-api RECTANGLE pay-core RECTANGLE user-api RECTANGLE user-core order_api --> order_core : RPC order_core --> pay_api : HTTP pay_api --> pay_core : MQ user_api --> user_core : RPC @enduml ``` 把这段代码粘到PlantUML在线编辑器,即可生成一张清晰的微服务调用图。
(图片来源网络,侵删)
评论列表