Week4 互联网系统的技术和手段
1 前端技术
CDN
在不改变系统架构的前提下,在运营商处缓存静态资源。加快用户访问静态资源速度,且不会占用自身带宽。
动静分离
动态页面与静态页面分开部署的架构方式。如有些电商系统中详情页和搜索页会分为不同的系统,分开部署。
图片服务
有自己搭建的图片服务如FastDFS,或者云存储服务。具有文件存储,文件上传下载功能。对比传统的NFS挂载。图片服务属于分布式架构,容易扩展。
2 网关及应用层
网关架构
聚合服务,或者叫做数据聚合服务,顾名思义就是把所需要的服务给聚集在一起,这个概念在现实中非常重要,因为聚合服务做得好,能尽可能地减少服务治理的问题。业务服务的实现方面更多的考虑业务逻辑,而安全、性能、监控可以交由 网关来做,这样既提高业务灵活性又不缺安全性。
负载均衡
将请求按负载均衡算法分配给集群中的一个实例处理。常见的有:
硬件负载(F5,RadWare),单机吞吐量为几百万级.
四层负载(LVS), 可以负载TCP层的连接,单机吞吐量在几十万级。
七层负载(Nginx, HAProxy, Envoy),单机吞吐量几万级。
动态页面静态化
提前将不容易变的页面用模板提前生成静态页面,减少读库。如电商的首页和详情页。
业务拆分
将大的系统按业务垂直拆分,可以提高系统性能。可以按业务按需扩容;简单的系统更能够实现性能优化。
3. 服务层架构
微服务框架
业务拆分后,服务的数量和各类大大增加。带来额外的治理复杂性,引入微服务框架解决如下问题:
服务的注册与发现
服务配置
负载均衡
服务网关
服务路由
1) SpringCloud及Dubbo
2)K8s+Istio
分布式消息对列
实现系统间的解耦
分布式事务
削峰
异步,提高吞吐量
流式处理(Kafka)
分布式缓存
读内存,减少读库,提高性能
分布式协调,如Hazelcast,重写了java util包下的原子类,集合和锁等。可以实现分布式控制。
存储层架构
分布式文件: FastDFS(适合小文件存储)。Hadoop(大文件存储)
NoSQL数据库:牺牲关系型数据库的ACID特性以带来更好的性能。文档型:Mongo DB, 列式:HBase, Key-Value: Redis等
4. 运维与安全
指标监控
Prometheus,Grafana。收费的Dynatrace.
日志监控
免费的ELK, 收费的Splunk
链路追踪
系统自实现Opentracing规范
Jeager
如某公司的监控平台架构:
评论