当前位置:网站首页>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
转载:
边栏推荐
- Flink SQL 实现读写redis,并动态生成Hset key
- Zhang Ping'an: accelerate cloud digital innovation and jointly build an industrial smart ecosystem
- 利用OPNET进行网络仿真时网络层协议(以QoS为例)的使用、配置及注意点
- 淘宝商品详情页API接口、淘宝商品列表API接口,淘宝商品销量API接口,淘宝APP详情API接口,淘宝详情API接口
- 【oracle】简单的日期时间的格式化与排序问题
- 利用OPNET进行网络任意源组播(ASM)仿真的设计、配置及注意点
- Jhok-zbg2 leakage relay
- 分布式事务解决方案之TCC
- Is the human body sensor easy to use? How to use it? Which do you buy between aqara green rice and Xiaomi
- 不同网段之间实现GDB远程调试功能
猜你喜欢
Torch optimizer small parsing
京东商品详情页API接口、京东商品销量API接口、京东商品列表API接口、京东APP详情API接口、京东详情API接口,京东SKU信息接口
4. Object mapping Mapster
Initial experience of annotation
Leakage relay jelr-250fg
论文阅读【Open-book Video Captioning with Retrieve-Copy-Generate Network】
Use Zhiyun reader to translate statistical genetics books
Leetcode (417) -- Pacific Atlantic current problem
Getting started with DES encryption
实现网页内容可编辑
随机推荐
Mybaits之多表查询(联合查询、嵌套查询)
JHOK-ZBL1漏电继电器
消息队列:如何确保消息不会丢失
Flink SQL 实现读写redis,并动态生成Hset key
基于NCF的多模块协同实例
Photo selector collectionview
《2》 Label
Paper reading [open book video captioning with retrieve copy generate network]
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
Leakage relay jelr-250fg
Writing process of the first paper
消息队列:消息积压如何处理?
Zero sequence aperture of leakage relay jolx-gs62 Φ one hundred
NPDP产品经理认证,到底是何方神圣?
[paper reading] semi supervised left atrium segmentation with mutual consistency training
[optimal web page width and its implementation] [recommended collection "
Digital innovation driven guide
4. Object mapping Mapster
Design, configuration and points for attention of network specified source multicast (SSM) simulation using OPNET
Mysql database learning (7) -- a brief introduction to pymysql