come from: [假如从餐饮店的角度来看架构…]https://www.javazhiyin.com/42641.html
数据源单独存储
前后端分离
常用的技术框架搭配可以是vue,react...结合 ssh,ssm,springboot系列进行搭配。
负载均衡
-
轮询访问:按照Tomcat1-->Tomcat2-->Tomcat3的顺序轮流访问,通知不同的厨师来做菜。
-
随机访问:每次有客人下单,Nginx都通过抽签的形式来进行随机指明厨师做菜。
-
最少链接法:谁的需求单最少,就指令相应的厨师做菜。
-
响应最快法:哪位厨师的做菜效率高,就选择哪位厨师。
-
哈希法:下单的顾客如果是小孩,就交给Tomcat1,如果是年轻人,就交给Tomcat2,如果是中年人或者老人,就交给Tomcat3。
这就是前后端分离+负载均衡
当随着客户请求的次数增加,通常我们会采用这种模式的架构进行搭建项目,将前端页面放置在nginx服务器上边进行加载,然后通过在nginx里面进行upstream的配置定制相应的负载均衡策略,在后端业务模块通过使用Tomcat来进行横向扩展,提高性能的承载能力。
MySQL的主从架构
随着系统应用访问量逐渐增大,单台数据库读写访问压力也随之增大,当读写访问达到一定瓶颈时, 将数据库的读写效率骤然下降,甚至不可用。为了解决此类问题,通常会采用mysql集群,当主库宕机后,集群会自动将一个从库升级为主库,继续对外提供服务。Master主机将数据操作记录在指定的日志文件里面,然后Slave主机之间通过IO线程来读取日志内容,同步操作到本机上去。一旦出现了故障,通过配置的keepalived信息可以自动实现主从的切换。
分库分表
基于MyCat中间件的分库分表方案
使用MyCAT这种中间件最主要的核心功能点就是分库分表,将一个大表水平划分为了N个小表。MyCAT的原理可以用“拦截”一词来形容,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析,如分片分析,路由分析,读写分离分析,缓存分析等,然后将此SQL发往后端的真实数据库,并将返回的结果做适当处理,最终返回给用户。
微服务架构
微服务架构”一词大概也是近些年来才出现,它将整体的业务模块拆分成了多个小而独立的子模块,然后每个子模块之间都会进行基于不同协议的相应通信。互联网公司里面经常会有微服务技术的身影,比较著名的微服务框架有Dubbo,SpringCloud。
消息中间件
消息中间件传输数据
MQ消息队列主要是在各个微服务模块之间进行相应的数据中转,能够起到系统解耦,削峰等作用,因此这种技术成为了微服务架构中非常受欢迎的技术中间件。常见的MQ消息队列中间件有RabbitMQ,ActiveMQ,RocketMQ,Kafka。
缓存设计
分布式Redis缓存分片架构
上图中的redis图标描述的redis cluster方案架构,通过对数据进行哈希计算之后放在不同的槽点,然后每个槽点都设置主从模式增强其容错性,采用分片模式的缓存架构可以增加系统的缓存数据量。