当前位置: 首页 > news >正文

app手机网站建筑网址导航

app手机网站,建筑网址导航,北京网站建设的,哪些软件可以做网站文章目录 初始架构#xff1a;单机架构第一次演进#xff1a;Tomcat与数据库分开部署第二次演进#xff1a;引入本地缓存和分布式缓存第三次演进#xff1a;引入反向代理实现负载均衡第四次演进#xff1a;数据库读写分离第五次演进#xff1a;数据库按业务分库第六次演进… 文章目录 初始架构单机架构第一次演进Tomcat与数据库分开部署第二次演进引入本地缓存和分布式缓存第三次演进引入反向代理实现负载均衡第四次演进数据库读写分离第五次演进数据库按业务分库第六次演进把大表拆分为小表第七次演进使用LVS或F5来使多个Nginx负载均衡第八次演进通过DNS轮询实现机房间的负载均衡第九次演进引入NoSQL数据库和搜索引擎等技术第十次演进大应用拆分为小应用第十一次演进复用的功能抽离成微服务 好的架构不是设计出来的而是演进出来的。 系统立项之初就想着设计一个大而全的架构期待着它能够解决各个阶段的各种问题这是不可能的。因为在初期很难预估后期业务的变化如果在初期就落地一个大而全的项目那么人力成本和时间成本都会很高。同时架构并不是千篇一律的千万不能在不同的业务和系统中生搬硬套同一个架构。先快速落地并关注业务的变化和系统的健壮程度在不同阶段对当前架构所面临的问题进行复盘和处理选择一个更适合自身的方向进行优化和改进这才是常规的做法。 在每个阶段找到对应该阶段网站架构所面临的问题在不断解决这些问题的过程中系统的架构在不断地朝着正确的方向演进。 这里我们以淘宝为例分析淘宝网站从一百个并发到亿级并发情况下服务架构的演进过程。淘宝作为电商平台其架构经历了多次演进以支持其快速增长的业务和高并发的用户请求。早期的淘宝采用了单体架构随着业务的发展逐步演进到使用分布式缓存、负载均衡、服务化等技术最终采用了微服务架构。 初始架构单机架构 在淘宝网站最初时应用数量与用户数都较少可以把Tomcat和数据库部署在同一台服务器上。 浏览器往www.taobao.com发起请求时首先经过DNS服务器域名系统把域名转换为实际IP地址10.102.4.1浏览器转而访问该IP对应的Tomcat。 如下图所示 新的技术挑战: 随着用户数的增长Tomcat和数据库之间竞争资源单机性能不足以支撑业务架构演进势在必行。 第一次演进Tomcat与数据库分开部署 第一次演进没有什么特别的将 Tomcat 和数据库分别独占服务器资源显著提高两者各自性能。 如下图所示 新的技术挑战: 随着用户数的增长并发读写数据库成为瓶颈。 第二次演进引入本地缓存和分布式缓存 第二次架构演进引入了缓存在Tomcat服务器上增加本地缓存并在外部增加分布式缓存缓存热门商品信息或热门商品的html页面等。 通过缓存能把绝大多数请求在读写数据库前拦截掉大大降低数据库压力。其中涉及的技术包括使用memcached作为本地缓存使用Redis作为分布式缓存还会涉及缓存一致性、缓存穿透/击穿、缓存雪崩、热点数据集中失效等问题。 演进之后如下图所示 新的技术挑战缓存抗住了大部分的访问请求随着用户数的增长并发压力主要落在单机的Tomcat上响应逐渐变慢 第三次演进引入反向代理实现负载均衡 在多台服务器上分别部署Tomcat使用反向代理软件Nginx把请求均匀分发到每个Tomcat中。此处假设Tomcat最多支持100个并发Nginx最多支持50000个并发那么理论上Nginx把请求分发到500个Tomcat上就能抗住50000个并发。 其中涉及的技术包括Nginx、HAProxy两者都是工作在网络第七层的反向代理软件主要支持http协议还会涉及session共享、文件上传下载的问题。 一起来看看使用反向代理之后的架构图 新的技术挑战: 反向代理使应用服务器可支持的并发量大大增加但并发量的增长也意味着更多请求穿透到数据库单机的数据库最终成为瓶颈 第四次演进数据库读写分离 把数据库划分为读库和写库读库可以有多个通过同步机制把写库的数据同步到读库。对于需要查询最新写入数据场景可通过在缓存中多写一份通过缓存获得最新数据。 其中涉及的技术包括Mycat它是数据库中间件可通过它来组织数据库的分离读写和分库分表客户端通过它来访问下层数据库还会涉及数据同步数据一致性的问题。 读写分离之后的架构图 新的技术挑战: 业务逐渐变多不同业务之间的访问量差距较大不同业务直接竞争数据库,相互影响性能 第五次演进数据库按业务分库 数据库按业务分库把不同业务的数据保存到不同的数据库中使业务之间的资源竞争降低对于访问量大的业务可以部署更多的服务器来支撑。这样同时会导致跨业务的表无法直接做关联分析需要通过其他途径来解决。 分库之后的架构图如下所示 新的技术挑战: 随着用户数的增长单机的写库会逐渐达到性能瓶颈 第六次演进把大表拆分为小表 比如针对评论数据可按照商品ID进行hash路由到对应的表中存储。 针对支付记录可按照小时创建表每个小时表继续拆分为小表使用用户ID或记录编号来路由数据。 只要实时操作的表数据量足够小请求能够足够均匀的分发到多台服务器上的小表那数据库就能通过水平扩展的方式来提高性能。其中前面提到的Mycat也支持在大表拆分为小表情况下的访问控制。 这种做法显著地增加了数据库运维的难度对DBA的要求较高。数据库设计到这种结构时已经可以称为分布式数据库。 我们来看拆分小表之后的架构图 新的技术挑战: 数据库和Tomcat都能够水平扩展可支撑的并发大幅提高。然而随着用户数的增长最终单机的Nginx会成为瓶颈 第七次演进使用LVS或F5来使多个Nginx负载均衡 由于瓶颈在Nginx因此无法通过两层的Nginx来实现多个Nginx的负载均衡。LVS和F5是工作在网络第四层的负载均衡解决方案其中LVS是软件运行在操作系统内核态可对TCP请求或更高层级的网络协议进行转发因此支持的协议更丰富并且性能也远高于Nginx可假设单机的LVS可支持几十万个并发的请求转发。 F5是一种负载均衡硬件与LVS提供的能力类似性能比LVS更高但价格昂贵。 由于LVS是单机版的软件若LVS所在服务器宕机则会导致整个后端系统都无法访问因此需要有备用节点。 架构图如下 新的技术挑战由于LVS也是单机的随着并发数增长到几十万时LVS服务器最终会达到瓶颈。此时用户数达到千万甚至上亿级别用户分布在不同的地区与服务器机房距离不同导致了访问的延迟会明显不同 第八次演进通过DNS轮询实现机房间的负载均衡 在DNS服务器中可配置一个域名对应多个IP地址每个IP地址对应到不同的机房里的虚拟IP。 当用户访问www.taobao.com时DNS服务器会使用轮询策略或其他策略来选择某个IP供用户访问。此方式能实现机房间的负载均衡 至此系统可做到机房级别的水平扩展千万级到亿级的并发量都可通过增加机房来解决系统入口处的请求并发量不再是问题。 演进之后的架构图如下 新的技术挑战: 随着数据的丰富程度和业务的发展检索、分析等需求越来越丰富单单依靠数据库无法解决如此丰富的需求 第九次演进引入NoSQL数据库和搜索引擎等技术 当数据库中的数据多到一定规模时数据库就不适用于复杂的查询了往往只能满足普通查询的场景。 对于统计报表场景在数据量大时不一定能跑出结果而且在跑复杂查询时会导致其他查询变慢。 对于全文检索、可变数据结构等场景数据库天生不适用。因此需要针对特定的场景引入合适的解决方案。 如对于海量文件存储可通过分布式文件系统HDFS解决对于key value类型的数据可通过Redis解决对于全文检索场景可通过搜索引擎如ElasticSearch解决对于多维分析场景可通过Kylin或Druid等方案解决。 当然引入更多组件同时会提高系统的复杂度不同的组件保存的数据需要同步需要考虑一致性的问题需要有更多的运维手段来管理这些组件等。 引入NoSQL和搜索引擎的架构图 新的技术挑战: 引入更多组件解决了丰富的需求业务维度能够极大扩充随之而来的是一个应用中包含了太多的业务代码业务的升级迭代变得困难。 第十次演进大应用拆分为小应用 为了应对日益复杂的业务场景通过使用分而治之的手段将整个网站业务拆分成不同的产品线通过分布式服务来协同工作。 按照业务板块来划分应用代码使单个应用的职责更清晰相互之间可以做到独立升级迭代。这时候应用之间可能会涉及到一些公共配置可以通过分布式配置中心Zookeeper来解决。 架构图如下 新的技术挑战: 不同应用之间存在共用的模块由应用单独管理会导致相同代码存在多份导致公共功能升级时全部应用代码都要跟着升级。 第十一次演进复用的功能抽离成微服务 如用户管理、订单、支付、鉴权等功能在多个应用中都存在那么可以把这些功能的代码单独抽取出来形成一个单独的服务来管理这样的服务就是所谓的微服务。应用通过HTTP、TCP或RPC请求等多种方式来访问服务每个单独的服务都可以由单独的团队来管理。 此外可以通过Dubbo、SpringCloud等框架实现服务治理、限流、熔断、降级等功能提高服务的稳定性和可用性。 微服务架构并不是神话故事中的孙悟空某一天忽然从石头缝里蹦出来了。微服务架构并不神秘在“微服务架构”这个概念“火”起来之前微服务架构叫什么或者换一个说法“微服务架构的雏形是什么”其实前文中网站架构演进的过程已经给出了答案。在微服务架构这个概念变得流行之前技术架构也在不断优化和演进。 在微服务架构这个概念“火”起来之前人们会用“分布式服务”或“服务化”来概括这种将大系统拆分为小系统的架构模式与微服务架构的方式很像也是对巨无霸的单体应用进行拆分并结合RPC协议进行服务通信和调用。常见技术有Dubbo、DubboX、CXF、gRPC、HSF、Motan等。随着微服务概念的流行、微服务生态的完善和微服务架构落地规则的细化现在业内人士都默认将这种架构方式称为微服务架构了。 有人肯定会有疑问难道只能往微服务架构的方向上演进吗答案肯定不是在前面的架构演进图中演进方向是一条笔直的线。而现实情况中肯定是有不同分支的系统架构的演进并不是一条笔直的线根据业务大小和业务侧重点的不同系统架构在演进时也会朝着不同的方向发展微服务架构只是众多技术架构中的一个适合自身业务系统和技术团队的才是最好的架构。而且近些年又出现了Service Mesh、DDD领域驱动、云原生等比较流行的技术方案今后还会有更加优秀的技术架构和落地方案出现。
http://www.tj-hxxt.cn/news/233808.html

相关文章:

  • 北京自适应网站建设七冶建设集团网站 江苏
  • 个人宽带 架设网站需备案营销策划思路
  • 传统网站模版青岛网站制作案例
  • 在线做网站有哪些平台flash网站建设技术是什么
  • 长沙网站制作价格哈尔滨网站提升排名
  • 黄山网站设计网站建设制作汕头
  • 网站建设设计制作培训做标识的网站 知乎
  • 南京做网站的客户电话建设网站实训心得
  • cms网站开发框架ps软件入门教程
  • 成品网站短视频源码搭建平面设计做兼职网站
  • 响应式网站 谷歌 移动网站全国最大招商网
  • 自助建站推广如何推广外贸型网站
  • 域名做违法网站长春网站建设团队
  • 班级网站 建设模板wordpress本地访问满
  • 网站模板下载百度云链接怎么做的计算机应用技术与php网站开发
  • 网站建设保障措施视频网站开发需要什么语言
  • 海口手机建站模板论坛网站怎么做跳转
  • 买了虚拟主机怎么做网站微官网免费制作平台
  • 广州移动 网站设计wordpress后台安全
  • tk网站的dns修改站群 wordpress
  • 书荒小说阅读器是哪个网站做的温州网站建设大全
  • 做网站的服务器排名唐山注册公司需要多少钱
  • 做漫画视频在线观看网站wordpress登陆后可见
  • 漂亮的网站改版中 html代码做网站搜索推广点击率太低怎么办
  • 网页制作教程网站阿里云电影网站建设教程
  • 搜索引擎网站开发商贸有限公司门头照片
  • 为什么企业需要建设网站甘肃住房和城乡建设局网站
  • 石家庄网站建设行业公司电商网名
  • 免费商城系统网站建设个人网站开发技术要求
  • 成都市做网站的公司做网站建设费用预算