电子商务网站建设的常用开发方法,做国外网站的零售,服装 营销型网站案例,怎么找app开发公司单机架构 单机架构就是只有一台服务器#xff0c;这台服务器负责所有的工作。 初期#xff0c;在用户访问量很少#xff0c;没有对我们的性能、安全等提出很高的要求#xff0c;而且系统架构简单#xff0c;无需专业的运维团队#xff0c;所以选择单机架构是合适的。 当…单机架构 单机架构就是只有一台服务器这台服务器负责所有的工作。 初期在用户访问量很少没有对我们的性能、安全等提出很高的要求而且系统架构简单无需专业的运维团队所以选择单机架构是合适的。 当前绝大部分公司的产品都是这种单机架构。
分布式系统
如果业务进一步增长用户量和数据量都水涨船高一台主机难以应付的时候就需要引入更多的硬件资源。而一台主机上能增加的硬件资源是有限的一台主机拓展到极限了就只能引入更多主机了。
一旦引入多台主机了系统就可以称为是分布式系统。
注引入分布式是万不得已。引入分布式意味着系统的复杂程度会大大提高。
数据库与应用分离
我们选择了将应⽤和数据分离的做法可以最小代价的提升系统的承载能⼒。
和之前架构的主要区别在于将数据库服务独⽴部署在同⼀个数据中⼼的其他服务器上应⽤服务通过⽹络访问数据。 负载均衡
我们的系统受到了用户的欢迎并且出现了爆款单台应⽤服务器已经⽆法满⾜需求了。我们的 单机应⽤服务器⾸先遇到了瓶颈摆在我们技术团队面前的有两种⽅案
1、垂直扩展 /纵向扩展 Scale Up通过购买性能更优、价格更⾼的应⽤服务器来应对更多的流量。这种⽅案的优势在于完全不需要对系统软件做任何的调整但劣势也很明显硬件性能和价格的增⻓关系是⾮线性的意味着选择性能 2 倍的硬件可能需要花费超过 4 倍的价格其次硬件性能提升是有明显上限的。
2、水平扩展 / 横向扩展 Scale Out用户先访问负载均衡器/网关再由负载均衡器分发请求到各个应用服务器。对于负载均衡器来说有很多的负载均衡具体的算法。如轮询即非常公平地将请求依次分给不同的应⽤服务器。
我们这里选择水平拓展。
注负载均衡器对于请求量的承担能力是远超过应用服务器的。因为负载均衡器只负责分配请求并不处理请求。所以不必担心负载均衡器的性能问题。
数据库读写分离 增加应用服务器确实能够处理更高的请求量。但是随之存储服务器要承担的请求量也就更多了。
为了解决该问题可以引入数据库读写分离 也就是引入多台数据库服务器分为两种主数据库和从数据库。
其中我们让主数据库只负责写操作从数据库只负责读操作。同时主库也会把数据实时的同步给从数据库。这样就减少了每一台服务器的压力。主服务器一般只有一个负责执行最多的操作从服务器可以有多个执行其他操作。同时从数据库可以通过负载均衡的方式让应用服务器进行访问。
引入缓存
数据库有个天然的问题响应速度比较慢。为了进一步提高数据的访问效率还可以把数据区分为“冷热”热点数据放到缓存中缓存的访问速度往往比数据库快多了。 注数据库里存储的仍然是完整的全量数据。 后续应用服务器在读取数据的时候就可以先读取缓存如果缓存中数据存在就直接返回。如果缓存里面不存在再去读数据库。使数据库服务器的压力进一步降低。
数据库分库分表 引入分布式系统不光要去能够应对更高的请求量并发量同时也要能够应对更大的数据量。是否可能会出现一台服务器已经存不下数据了呢
我们可以把数据库再进行进一步的拆分分库分表 本来一个数据库服务器这个数据库服务器上有多个数据库指逻辑上的数据集合现在可以引入多个数据库服务器每个数据库服务器存储一个或者一部分数据库。
如果某个表特别大大到一台主机存不下也可以针对表进行拆分。
具体分库分表如何实现还是要结合实际的业务场景来展开。
引入微服务 之前的应用服务器使一个服务器程序里面做了很多的业务。这就可能会导致这一个服务器的代码变的越来越复杂。为了更方便于代码的维护就可以把这样的一个复杂的服务器拆分成更多的功能更单一但是更小的服务器。称为微服务。 当应用服务器变得复杂了势必就需要更多的人来维护。当人多了就需要配套的管理把这些人组织好。因此就需要划分组织结构分成多个组。这些组就要进行分工。按照功能拆分成多组微服务就可以有利于上述人员的组织结构的分配。因此引入微服务本质上是在解决“人”的问题。
注引入微服务付出的代价
1、系统的性能下降。拆出来更多的服务多个功能之间要更依赖网络通信。网络通信的速度很可能是比硬盘还慢的。
2、系统复杂程度提高可用性受到影响。服务器更多了出现问题的概率就更大了。
微服务的优势
1、解决了人员分配的问题。
2、使用微服务可以更方便于功能的复用。
3、可以给不同的服务进行不同的部署。
补充概念
应⽤Application/ 系统System一个应用就是一个/组服务器程序。
模块Module/ 组件Component一个应用里面有很多个功能每个独立的功能就可以称为一个模块/组件。
分布式Distributed引入多个服务器协同配合完成一系列的工作。一般指物理上的多个主机。
集群Cluster引入多个服务器协同配合完成一系列的工作。一般指逻辑上的多个主机。
主Master/ 从Slave分布式系统中一种比较典型的结构。多个服务器节点其中一个是主另外的是从。从节点的数据要从主节点这里同步过来。
中间件Middleware和业务无关的服务功能更通用的服务。如数据库缓存消息队列.....
关于分布式系统的一些评价指标
可用性Availability系统整体可用的时间/总的时间
响应时长Response Time RT衡量服务器的性能。处理一次请求花费多少时间。
吞吐Throughputvs 并发Concurrent衡量系统处理请求的能力。也是衡量性能的一种方式。 以上关于分布式系统希望对你有所帮助。