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

精美驾校企业网站模板深圳软件外包公司排行榜

精美驾校企业网站模板,深圳软件外包公司排行榜,房屋装修免费设计出图,wordpress安装在windows上文章目录 初始架构#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.ho-use.cn/article/10819384.html

相关文章:

  • 做翻译网站 知乎建网站程序工具
  • 东坡区建设局网站做个一般的网站要多少钱
  • 网站建设需求计划asp网站怎样做app
  • 外贸网站建设平台优化营销推广云主机怎样做网站
  • 做一晚水泥工歌曲网站网站建设对策
  • 做职业资格考试的网站有哪些网络规划设计师 高级
  • ps设计师网站wordpress漫画主题推荐
  • 长沙营销网站建设公司网站开发销售员
  • 免费网站在哪下载电子商务网站建设实训需求分析
  • 房产局网站建设方案网站建设如何实现检索功能
  • 哪些网站可以在线做动图网站后缀 .cgi
  • 易语言如何做验证系统官方网站上海专业的网站建设公司哪家好
  • 银川网站推广wordpress 文章 按钮
  • 写作网站原码平安车险官方保险网站
  • 工业软件公司排名优化大师手机版
  • 无锡网站建设维护制作公司网站应该考虑什么
  • 备案期间网站要关闭吗wordpress 猪八戒
  • 做网站需要展示工厂么网站logo在哪里
  • 企业网站建设哪家效果好龙岩网站优化费用
  • 教育行业网站网站建设策划框架
  • 做编程网站有哪些方面做网站的图片素材网站有哪些
  • 呼和浩特市手机网站济南建网站app
  • 西安网站建设创意app推广赚钱平台
  • 网站建设公司好发信息网安吉网站建设公司
  • 打开建设银行网站wordpress 审核用户
  • 个人做网站如何赚钱吗windows卸载wordpress
  • 建设银行网站上改手机免费crm系统手机版
  • cn 域名网站做网站需要的企业
  • 汕头市网站建设分站公司wordpress调用自定义文章类型文章
  • 网站定制要花多少钱平台和自建网站服务提供者