Web 应用开发(重要)
纬度 | 涉及技术架构 |
---|---|
从架构来看 | MVC、MVP、MVVM、REST、Webservice、微服务 |
从缓存来看 | Mem Cache、Redis、Squid |
从并发分流来看 | 集群(负载均衡)、CDN |
从数据库来看 | 主从库(主从复制)、内存数据库、反规范化技术、NoSQL、分区(分表)技术、视图 |
从持久化来看 | Hibernate、Mybatis |
从分布式存储来看 | Hadoop、FastDFS、区块链 |
从数据编码来看 | XML、JSON |
从 Web 应用服务器来看 | Apache、WebSphere、Weblogic、Tomcat、JBOSS、IIS |
其他 | 有状态与无状态、响应式 Web 设计等 |
Web 技术演变
- 单台机器到数据库与 Web 服务器分离
-
应用服务器集群
存在问题:用户请求由谁来转发到具体的应用服务器;用户如果每次访问的服务器都不一致,那么如何维护 session 的一致性。
解决方案:
1. 设置 session 服务器,统一管理 session 会话信息 2. 负载均衡,客户端保存 cookie 信息,每次访问携带 cookie 信息
flowchart TB
subgraph a[容器 1]
subgraph Web 应用
A[学员]
B[视频]
C[直播]
end
end
subgraph b[容器 2]
subgraph Web 应用
D[学员]
E[视频]
F[直播]
end
end
G[数据库]
a --> G
b --> G
- 数据库集群,分为主从库
- 用缓存缓解从库读取压力
flowchart LR
a[应用服务器集群]
A[数据库 主]
B[数据库 从]
C[缓存集群]
A <-->|同步| B
a-->|写| A
B-->|2.读| a
C-->|1.读| a
面向服务架构 SOA
Q&A
CDN 内容分发网络
CDN (Content Delivery Network,内容分发网络)是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN 的关键技术主要有内容存储和分发技术。
CDN 的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
REST 表述性状态传递
REST (Representational State Transfer)是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
REST 的 5 个原则
- 网络上的所有事物都被抽象为资源;
- 每个资源对应一个唯一的资源标识;
- 通过通用的连接接口对资源进行操作;
- 对资源的各种操作不会改变资源标识;
- 无状态性:所有的操作都是无状态的。
微服务架构
微服务架构建议将大型复杂的单体架构应用划分为一组微小的服务,每个微服务根据其负责的具体业务职责提炼为单一的业务功能;每个服务可以很容易地部署并发布到生产环境里隔离和独立的进程内部,它可以很容易的扩展和变更;对于一个具体的服务来说可以采用任何适用的语言和工具来快速实现;服务之间基于基础设施互相协同工作。