当前位置:网站首页>WEB架构设计过程
WEB架构设计过程
2022-07-06 23:41:00 【勤天】
目录
一、架构演变
1、初始搭建
基于框架,运行在Tomcat容器中。文件、数据库、应用程序在一个服务器上。
2、服务分离
随着用户量上升,单台服务器无法满足系统的负载,可以把应用服务器和数据服务器单独部署,如果有条件也可以把文件服务器单独部署。
3、反向代理
为了提升服务处理能力,我们在Tomcat容器前加一个代理服务器,比如Nginx、apache也。用户的请求发送给反向代理,然后反向代理把请求转发到后端的服务器。严格意义上来说,Nginx属于web服务器,一般处理静态html、css、js请求,而Tomcat属于web容器,专门处理JSP请求,当然Tomcat也是支持html的,只是效果没有Nginx好而已。
4、动静分离
基于以上Nginx反向代理,我们还可以实现 动静分离,静态请求如html、css、js等请求交给Nginx处理,动态请求分发给后端Tomcat处理。Nginx 升级到1.9.5+可以开启HTTP/2.0时代,加速网站访问。当然,如果公司不差钱, CDN也是一个不错的选择。
5、服务拆分
在这分布式微服务已经普遍流行的年代,其实我们没必要踩过多的坑,就很容易进行拆分。市面上已经有相对比较成熟的技术,比如阿里开源的Dubbo(官方明确表示已经开始维护了),Spring家族的SpringCloud,当然具体如何去实施,无论是技术还是业务方面都要有很好的把控。
微服务与轻量级通信:
- 同步通信和异步通信
- 远程调用RPC
- REST
- 消息队列
6、持续集成部署
服务拆分以后,随着而来的就是持续集成部署,你可能会用到以下工具:Docker、Jenkins、Git、Maven。基本拓扑结构如下所示:
整个持续集成平台架构演进到如下图所示:
7、服务集群
Linux集群主要分成三大类( 高可用集群, 负载均衡集群,科学计算集群)。其实,我们最常见的也是生产中最常接触到的就是负载均衡集群。
(1)负载均衡实现
- DNS负载均衡,一般域名注册商的dns服务器不支持
- 四层负载均衡(F5、LVS),工作在TCP协议下
- 七层负载均衡(Nginx、haproxy),工作在Http协议下
(2)分布式session
大家都知道,服务一般分为有状态和无状态,而分布式sessoion就是针对有状态的服务。
8、读写分离
MySql主从配置,读写分离并引入中间件,开源的MyCat,阿里的DRDS都是不错的选择。如果是对高可用要求比较高,但是又没有相应的技术保障,建议使用阿里云的RDS或者Redis相关数据库,省事省力又省钱。
9、缓存优化
引入缓存无非是为了减轻后端数据库服务的压力,防止其"罢工"。常见的缓存服务有,Ehcache、OsCache、MemCache、Redis,当然这些都是主流经得起考验的缓存技术实现,特别是Redis已大规模运用于分布式集群服务中,并证明了自己优越的性能。
10、消息队列
1、异步通知:比如短信验证,邮件验证这些非实时反馈性的逻辑操作。
2、流量削锋:应该是消息队列中的常用场景,一般在秒杀或团抢活动中使用广泛。
3、日志处理:系统中日志是必不可少的,但是如何去处理高并发下的日志确是一个技术活,一不小心可能会压垮整个服务。工作中我们常用到的开源日志ELK,为什么中间会加一个Kafka或者redis就是这么一个道理(一群人涌入和排队进的区别)。
4、消息通讯:点对点通信(个人对个人)或发布订阅模式(聊天室)。
11、日志服务
消息队列中提到的ELK开源日志组件对于中小型创业供公司是一个不错的选择。
12、安全优化
以上种种,没有安全做保证可能都会归于零。
- 阿里云的VPN虚拟专有网络以及安全组配置
- 自建机房的话,要自行配置防火墙安全策略
- 相关服务访问,比如Mysql、Redis、Solr等如果没有特殊需求尽量使用内网访问并设置鉴权
- 尽量使用代理服务器,不要对外开放过多的端口
- https配合HTTP/2.0也是个不错的选择
二、设计原则
1、高可用
- 负载均衡(负载均衡算法)
- 反向代理
- 服务隔离
- 服务限流
- 服务降级(自动优雅降级)
- 失效转移
- 超时重试(代理超时、容器超时、前端超时、中间件超时、数据库超时、NoSql超时)
- 回滚机制(上线回滚、数据库版本回滚、事务回滚)
2、高并发
- 客户端缓存(减少网络带宽、降低服务器压力、减少网络延迟)
- HTTP缓存
- 多级缓存
- 分布式缓存
- 连接池
- 异步并发
3、分布式事务
- 二阶段提交(强一致)
- 三阶段提交(强一致)
- 消息中间件(最终一致性),推荐阿里的RocketMQ
4、队列
- 任务队列
- 消息队列
- 请求队列
5、数据库技术
- 主从复制(易于扩展、可用备份)
- 读写分离(提高查询速度、减少IO瓶颈、高扩展)
- 单体垂直扩容(业务分离、高扩展、高性能)
- 单体水平扩容(高扩展、高性能)
- 数据异构
6、网络安全
- SQL注入
- XSS攻击
- CSRF攻击
- 拒绝服务(DoS,Denial of Service)攻击
7、负载均衡
- 网络(全局负载均衡,DNS轮询、CDN网络分发)
- 硬件(本地负载均衡,负载均衡器、地址转换网关,效率高但价格贵)
- 软件(本地负载均衡,Linux Virtual Server、Nginx、HAProxy)
三、必备工具
1、操作系统
Linux(必备)、微软
2、负载均衡
DNS、F5、LVS、Nginx、OpenResty、HAproxy、负载均衡SLB(阿里云)
3、分布式框架
Dubbo、Motan、Spring Cloud
4、数据库中间件
DRDS (阿里云)、Mycat、360Atlas
5、消息队列
RabbitMQ、ZeroMQ、Redis、ActiveMQ、Kafka
6、注册中心
Zookeeper、Redis
7、缓存
Redis、Oscache、Memcache、Ehcache
8、集成部署
Docker、Jenkins、Git、Maven
9、存储
OSS、NFS、FastDFS、MogileFS
11、数据库
MySql、Redis、MongoDB、PostgreSQL、Memcache、HBase
12、网络
专用网络VPC、弹性公网IP、CDN
转载:
边栏推荐
- Under the trend of Micah, orebo and apple homekit, how does zhiting stand out?
- [论文阅读] A Multi-branch Hybrid Transformer Network for Corneal Endothelial Cell Segmentation
- 做自媒体视频剪辑,专业的人会怎么寻找背景音乐素材?
- 【oracle】简单的日期时间的格式化与排序问题
- Summary of the mean value theorem of higher numbers
- Talk about mvcc multi version concurrency controller?
- 消息队列:如何确保消息不会丢失
- 《4》 Form
- How does mapbox switch markup languages?
- How can project managers counter attack with NPDP certificates? Look here
猜你喜欢
Design, configuration and points for attention of network specified source multicast (SSM) simulation using OPNET
不同网段之间实现GDB远程调试功能
利用OPNET进行网络仿真时网络层协议(以QoS为例)的使用、配置及注意点
DOM-节点对象+时间节点 综合案例
《4》 Form
CVE-2021-3156 漏洞复现笔记
JSP setting header information export to excel
4. Object mapping Mapster
[paper reading] semi supervised left atrium segmentation with mutual consistency training
Getting started with DES encryption
随机推荐
4. 对象映射 - Mapping.Mapster
[paper reading] semi supervised left atrium segmentation with mutual consistency training
NPDP产品经理认证,到底是何方神圣?
Taobao commodity details page API interface, Taobao commodity list API interface, Taobao commodity sales API interface, Taobao app details API interface, Taobao details API interface
Aidl and service
[JS component] custom select
Summary of the mean value theorem of higher numbers
DOM-节点对象+时间节点 综合案例
Leakage relay llj-100fs
Timer create timer
说一说MVCC多版本并发控制器?
ThinkPHP Association preload with
Dj-zbs2 leakage relay
In memory, I moved from CSDN to blog park!
分布式事务解决方案之TCC
Zhang Ping'an: accelerate cloud digital innovation and jointly build an industrial smart ecosystem
batch size设置技巧
Talk about mvcc multi version concurrency controller?
【js组件】自定义select
How digitalization affects workflow automation