互联⽹三⾼架构:⾼并发、⾼性能、⾼可⽤
⾯向互联⽹的三⾼系统,最关注的软件质量属性是:性能、可⽤性、伸缩性、扩展性、安全性。
⽽构建此类系统,最常见的架构模式有:横向分层、纵向分割、分布式化、集化、使⽤缓存、使⽤异步模式、使⽤冗余、⾃动化(发布、部署、监控)。
具体来说,可以在不同层次常⽤的技术有:
前端架构
浏览器优化技术:合理布局,页⾯缓存,减少http请求数,页⾯压缩,减少 cookie 传输。
1)CDN
CDN的基本原理是⼴泛采⽤各种缓存服务器,将这些缓存服务器分布到⽤户访问相对集中的地区或⽹络中,在⽤户访问⽹站时,利⽤全局负载技术将⽤户的访问指向距离最近的⼯作正常的缓存服务器上,由缓存服务器直接响应⽤户请求。
2)DNS负载均衡
3)动静分离,静态资源独⽴部署,动态图⽚独⽴提供服务
应⽤层架构
1)业务拆分
常用微服务架构2)负载均衡
3)虚拟化服务器、容器化
4)⽆状态(以及分布式 Session)
分布式Session有如下⼏种实现⽅式。
1.Session复制机制
在⽀持Session复制的Web服务器上,通过修改Web服务器的配置,可以实现将Session同步到其它Web服务器上,达到每个Web服务器上都保存⼀致的Session。
优点:代码上不需要做⽀持和修改。
缺点:需要依赖⽀持的Web服务器,⼀旦更换成不⽀持的Web服务器就不能使⽤了,在数据量很⼤的情况下不仅占⽤⽹络资源,⽽且会导致延迟。
适⽤场景:只适⽤于Web服务器⽐较少且Session数据量少的情况。
可⽤⽅案:开源⽅案tomcat-redis-session-manager,暂不⽀持Tomcat8。
2.Session粘滞机制
将⽤户的每次请求都通过某种⽅法强制分发到某⼀个Web服务器上,只要这个Web服务器上存储了对应Session数据,就可以实现会话跟踪。
优点:使⽤简单,没有额外开销。
缺点:⼀旦某个Web服务器重启或宕机,相对应的Session数据将会丢失,⽽且需要依赖负载均衡机制。
适⽤场景:对稳定性要求不是很⾼的业务情景。
3.Session集中管理机制
在单独的服务器或服务器集上使⽤缓存技术,如Redis存储Session数据,集中管理所有的Session,所有的Web服务器都从这个存储介质中存取对应的Session,实现Session共享。
优点:可靠性⾼,减少Web服务器的资源开销。
缺点:实现上有些复杂,配置较多。
适⽤场景:Web服务器较多、要求⾼可⽤性的情况。
可⽤⽅案:开源⽅案Spring Session,也可以⾃⼰实现,主要是重写HttpServletRequestWrapper中的getSession⽅法,博主也动⼿写了⼀个,github搜索joincat⽤户,然后⾃取。
4.基于Cookie管理机制
这种⽅式每次发起请求的时候都需要将Session数据放到Cookie中传递给服务端。
优点:不需要依赖额外外部存储,不需要额外配置。
缺点:不安全,易被盗取或篡改;Cookie数量和长度有限制,需要消耗更多⽹络带宽。
适⽤场景:数据不重要、不敏感且数据量⼩的情况。
最后的总结
以上四种⽅式,相对来说,Session集中管理更加可靠,使⽤也是最多的。
5)分布式缓存
分布式缓存的典型应⽤场景可分为以下⼏类:
1. 页⾯缓存.⽤来缓存Web 页⾯的内容⽚段,包括HTML、CSS 和图⽚等,多应⽤于社交⽹站等;
2. 应⽤对象缓存.缓存系统作为ORM 框架的⼆级缓存对外提供服务,⽬的是减轻数据库的负载压⼒,加速应⽤访问;
3. 状态缓存.缓存包括Session 会话状态及应⽤横向扩展时的状态数据等,这类数据⼀般是难以恢复的,对可⽤性要求较⾼,多应⽤于⾼可⽤集;
4. 并⾏处理.通常涉及⼤量中间计算结果需要共享;
5. 事件处理.分布式缓存提供了针对事件流的连续查询(continuous query)处理技术,满⾜实时性需求;
6. 极限事务处理.分布式缓存为事务型应⽤提供⾼吞吐率、低延时的解决⽅案,⽀持⾼并发事务请求处理,
多应⽤于铁路、⾦融服务和电信等领域.
异步、事件驱动架构、消息队列
EDA是⼀种以事件为媒介,实现组件或服务之间最⼤松耦合的⽅式。传统⾯向接⼝编程是以接⼝为媒介,实现调⽤接⼝者和接⼝实现者之间的解耦,但是这种解耦程度不是很⾼,如果接⼝发⽣变化,双⽅代码都需要变动,⽽事件驱动则是调⽤者和被调⽤者互相不知道对⽅,两者只和中间消息队列耦合。
多线程
动态页⾯静态化
我们只需要编写这么⼀个HttpModule就可以了,当⽤户第⼀次请求asp处理时,我们可以在ihttpmodule中拦截到这个请求,然后获取到这次请求应该返回的html代码,然后我们返回这些html给⽤户,并保存刚才我们获取到的html到⽂件内,当⽤户下次请求时,我们只需要直接返回我们已经保存的html⽂件即可。
服务层架构
1)分布式微服务(分级管理,超时设置,异步调⽤,服务降级,幂等性设计。)
同应⽤层架构
存储层架构
1)DFS(分布式⽂件存储)
2)路由数据库
3)No SQL 数据库
4)数据同步
5)数据冗余
安全架构
1)Web攻击(XSS、Sql Injection)2)数据加密
3)密钥管理
4)发布、运维
⾃动化测试与发布
1)灰度发布
2)浏览器数据采集
3)服务器业务数据采集
4)服务器性能数据采集
5)系统监控
6)系统报警
7)机房(散热、省电、定制服务器)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论