回龙观手机网站建设服务,网页设计研究生专业,门牌设计图片,赣州网络推广行业日升时奋斗#xff0c;日落时自省 目录
1、单机架构
2、应用数据分离架构
3、应用服务集群架构
4、读写分离/主从分离架构
5、冷热分离架构
6、垂直分库架构
7、微服务架构
8、容器编排架构
9、小结 1、单机架构 特征#xff1a;应用服务和数据库服务器公用一台服务… 日升时奋斗日落时自省 目录
1、单机架构
2、应用数据分离架构
3、应用服务集群架构
4、读写分离/主从分离架构
5、冷热分离架构
6、垂直分库架构
7、微服务架构
8、容器编排架构
9、小结 1、单机架构 特征应用服务和数据库服务器公用一台服务器 出现场景访问量较小单机可以满足由于现在硬件的升级所以一台服务器够支持很多请求 红色箭头表示请求访问蓝色箭头表示响应 单机程序中其实靠的不就是数据库信息的拉取嘛但是数据库也不是不能去掉光服务器负责所有操作单机架构是比较常见架构使用
一台主机的硬件资源是有上限的CPU、内存、硬盘、网络每次请求都会收到一个请求都是需要消耗上述的一些资源现在一台主机都够用不行了其实也可以增加硬件资源但是肯定硬件资源不能在加了就开始使用分布式 优点部署简单、成本低 缺点性能有严重平静、数据库和应用互相竞争资源 2、应用数据分离架构 特征应用服务和数据库服务使用不同服务器 出现场景单机架构存在严重的资源竞争导致站点变慢 红色箭头表示请求访问蓝色箭头表示响应 优点成本相对可控、性能相比单机有提升、数据库单独隔离、不会因为应用把数据库搞坏不至于数据库瘫痪 缺点硬件成本变高、性能有瓶颈无法对应海量并发当前数据库仍然是要接收所有请求处理处理 3、应用服务集群架构 特征引入负载均衡应用以集群方式运作 出现场景单个应用不足以支持海量的并发请求高并发的时候站点响应变慢
注能接收请求量多到数千多个应用服务器集群同时处理大量请求量此处tomcat就是横向扩展 注如果请求量更大呢其实也同样可以按照上面的方法交给一个更大应用服务接收请求不够再进行横向扩展第一先交给上层管理第二同层进行横向扩展 红色箭头表示请求访问蓝色箭头表示响应 注根据需求而定不是说这样的架构一定好能承载越多并发量就越适合当前根据情况而定对于图解有个解释上面画的只是一个大概的图实际上有了上层之后下层就需要更多来接收毕竟上层是负载均衡器还是要给下层分配的 优点 针对应用服务器 1高可用应用满足高可用不会一个服务出问题整个站点挂掉 2高性能如果不是访问数据库应用相关处理海量请求快速响应 3扩展能力支持横向扩展 缺点 针对数据库 1性能瓶颈无法应对数据库的海量查询 2可用性数据库是点单的所以一旦崩溃就是整个系统挂掉 3运维成本高扩展部署运维工作增加 4硬件成本高说的就是F5这个硬件 4、读写分离/主从分离架构 特征将数据库集群化但是为了保证所取数据都是相同的就让一个数据哭来下剩下的小弟们跟随大哥进行同步数据库服务器搭建主从集群一主一从、也可以一主多从都可以数据哭主机负责写操作从机只负责读操作 出现场景数据库到达瓶颈而互联网应用一般读多写少数据库承载压力主要来源于读的请求你造成的那么针对这样的情况把读操作和写操作分开 注红色箭头表示请求是写操作浅蓝色箭头表示读操作紫色箭头表示写操作进行同步同步给从库蓝色箭头表示响应 优点 针对请求访问 1读取性能提升 2读取操作为主数据库减轻了大部分请求的压力写操作性能也得以提升 3可用性一个数据库的坍塌不会给系统带来致命的伤害提高了可用性 缺点 针对热点数据 1读库虽然分担了很多请求量但是它也会负载热点数据的疯狂访问 2同步从库挂掉或者延时导致主库和从库数据有一定可能不一致 3服务器成本需要增加添东西了能不增加 5、冷热分离架构
这里针对冷热数据进行解析针对所谓数据都有常用数据不常用数据也就衍生出了“二八原则”20%的热点数据能满足80%的访问需求不是说一定就是20%按照业务需求来定夺分配“一九”也不是没有 特征引入缓存实行冷热分离将热点数据放到缓存中快速响应 出现场景海量的请求导致数据库负载过高站点响应在度变慢说明数据库已经开始吃力了不足以提供较高的舒适度 优点大幅度降低数据库的访问请求性能提升非常明显访问缓存相比访问数据库快 缺点 1涉及到缓存就会设想到缓存到来的相关问题缓存击穿、缓存失败、缓存雪崩等问题 2服务器成本的提高 3业务量支持变大数据库单库太大单表个体太大还是会导致数据库查询很慢导致数据库再度到达瓶颈期 6、垂直分库架构 特征数据库的数据被拆分数据库数据分布式存储分布式处理分布式查询也可以理解为分布式数据库架构 出现场景写操作比较多单机库性能已经支持不了了需要拆分数据库数据表的数据量太多操作压力大需要进行分表降低运维难度就有了分布式数据库库表本来也就支持分布式
分库分表 垂直分库是指按照业务功能模块进行分库将不同的业务模块分别放在不同的物理数据库中这样可以提高系统的性能和扩展性 水平分库是指按照用户属性地市或者ID的hash进行分库将全省划分为个大区每个大区有一个物理数据库这样可以提高系统的扩展性和性能 注这里就不在往整个架构图中带入了这里直接将常见到的应用带入到架构中这些中间件都是可以支持分库操作内部实现思想也基本如上
分布式数据库 优点数据库吞吐量大幅度提升不再是瓶颈期 缺点 1跨库join操作分布式事务等问题需要对应进行解决目前的mpp都有解决对策 2数据库和缓存结合能够支持海量的请求但是应用代码整体耦合修改一行代码就需要连带修改很多整体重新发布 7、微服务架构 特征按照业务板块来分应用代码是单个应用的职责更清晰相互之间可以做到独立升级迭代 出现场景场景不定全看自己对微服务的定位这里针对几点进行评定
1扩展性差应用程序不能轻松扩展因为每次需要更新应用程序时都必须重新构建整个系统
2持续开发困难一个很小的改动会惊动整个系统的代码连带改动无法频繁并容易发布这个是灵活性的体现
3不可靠一个功能不起作用了整个系统可能不能动
4代码维护比较吃力都是在一起的接手人需要了解整个系统才能每步修改
微服务体现 架构演示 注图并没有画完这里解释当我们找商品的时候是可以去访问用户返回用户信息之后在去找商品商品查找操作是一样的先找缓存如果缓存没有在找数据库 优点 1灵活性高服务独立测试、部署、升级、发布 2独立扩展微服务将功能独立起来各自扩展互不干扰 3提高容错性一个服务问题不会两边挂 4支持编程语言多 缺点 1运维复杂度高应用和服务的部署变得复杂同一台服务器上不是多个服务还要解决运行环境冲突的问题如果需要动态扩缩场景需要水平扩展服务的性能就需要在新增服务上准备运行环境 2资源使用变多独立一个微服务是需要消耗CPU和内存的 3处理故障困难需要查查看不同的日志完成问题定位每个都是独立的如果出问题需要慢慢排查 8、容器编排架构 特征借助容器化技术Docker将应用/服务可以打包为镜像通过容器编排工具k8s来动态分布和部署镜像服务以容器化方式运行 出现场景
1微服务拆分细致服务多部署工作量大配置复杂容易出错
2微服务数量多扩缩容麻烦而且容易出错每次缩容后再扩容又需要重新配置服务对应的环境参数
3微服务之间运行环境可能冲突需要更多的资源来进行部署或者通过修改配置来解决冲突
容器化举例
这里就我们比较熟悉的Java一套体系来说 java应用涉及java、jdk、centos7 但是我们放到服务器上一次一次放太麻烦了docker可以直接打包这个三个体系称为一个体系直接部署到服务器上 容器化体现 容器编排架构 红色箭头表示请求蓝色箭头表示响应紫色箭头表示去拿用户信息浅蓝色箭头表示缓存没有访问数据库
注这里的图没有画完同样是访问商品时拿到用户数据信息再次进行数据访问先访问缓存数据不存在访问数据库 优点 1部署运维简单快速一条命令就可以完成几百个服务的部署或者扩缩容 2隔离性好容器与容器之间文件系统网络相互隔离不会产生环境冲突 3支持滚动更新版本间奇幻都可以通过一个命令完成升级或者回滚 缺点 1技术栈变多技术要求严格 2运维成本极高机器不是随时都会面临如此的资源消耗一般只会维持一段时间剩余时间还是闲置状态此时资源利用率低推荐云厂商服务器解决问题 9、小结 注最后压力给到了应用但是并没有结束应用的改动会影响整个系统的代码耦合性太高导致运维部署发布都需要很多次任务量很大图太长了不太会截这里分开截内容是连续的 下面就有了微服务微服务并没有解决运维任务量大的问题微服务只是将代码解耦能让开发更加便捷各司其职互不影响运维的麻烦还是经过docker容器化打包成镜像交给k8s进行编排降低运维的任务量