宜立方商城架构总结

宜立方商城架构

分布式+SOA

什么是分布式?

       将一个完整的系统按照功能点拆成若干个相互独立的子系统,每一个子系统可称之为一个节点,每一个节点都可以单独配置多台服务器(集群),各个子系统之间相互进行通信,进行协调合作,共同完成整个系统的业务流程,这就是分布式。

什么是集群?

       多台服务器做同一件事,这就是集群。

为什么要使用分布式?

答:一个最简单的web项目,它的架构可能就是表现层>业务层—>持久层—>数据库。整个项目部署到一台Tomcat中。一台Tomcat服务器理论支持500个并发,1000个并发需要2Tomcat10000并发需要20台服务器做tomcat集群。按理说,通过不断的加Tomcat服务器也是可以解决高并发问题的。但是任何一个项目都应该有用户登录的功能,这里面就必然会涉及到Session复制的问题,Tomcat本身具有Session共享的功能。因为Seesion复制,就导致tomcat集群中节点数量不断增加,其服务能力会先增加后下降,一个集群中一般有5个服务器,效果会最好。我们说,能用硬件解决的问题不用软件解决,但是当硬件解决不了时,只能通过软件来解决。

  所以我们使用了分布式,将整个系统按功能点拆分成若干个独立的子系统,再根据每个子系统的业务访问量单独配置集群,比如首页的并发量就高,订单页面的并发量就会相对较低。而且分布式将Session复制问题单独提到一个子系统中,即单点登录系统,其它子系统没有了Session复制问题,那么其集群中的服务器数量就没有限制了。

项目分布式后拆成的子系统有哪些?

答:前台系统、后台管理系统、购物车系统、订单系统、搜索系统、单点登录系统。

分布式的优点有哪些?

1.将整个系统拆成不同的模块,模块之间使用接口通信,降低了模块之间的耦合度

2.把一个项目拆成若干子项目,方便不同的团队负责不同的子项目

3.当有新功能增加时,只需要再增加一个子项目,调用其它子项目的接口就可以

4.可以灵活的进行分布式部署

分布式的缺点有哪些?

答:1.系统之间交互需要使用远程通信,接口开发增加工作量

       2.各个模块有一些通用的业务逻辑无法共用

 

       比方说,前台系统中的首页需要展示商品,需要查询商品信息,订单也需要展示商品,也需要查询商品信息,都是查商品信息,可能都是根据商品id查询商品信息,是同一个业务逻辑。但现在这个业务逻辑能共用吗?不能。在不同的工程里面,你是不能共用的。你只能是这个工程里复制一份,那个工程里复制一份,两份。那好了,我们想把这些业务逻辑共用。怎么才能共用呢?

       所以我们在分布式的基础上引入soa的架构。

       SOAService Oriented Architecture面向服务的架构。也就是把工程拆分成服务层、表现层两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。

       系统与系统之间的通信是通过dubbo实现的。

可以简单介绍一下dubbo的架构?

答:


       Dubbo是一个服务治理工具。为所有的服务提供了一个统一的入口。

       Dubbo架构中包含五个角色,分别是:ContainerProviderRegistryConsumerMonitor。其中,Container是容器,可以是SpringProvider是服务提供者,Registry是注册中心、Consumer是服务调用者、Monitor是监控中心。

       执行流程如下:

       1. 在初始化容器的时候,Provider发布服务;

       2. Provider将发布的服务在注册中心Registry中进行注册;

       3. Consumer预调用服务,先向注册中心Registry询问有没有该服务被发布,如果有,注册中心向Consumer返回该服务的地址(ip+端口号)

       4. Consumer拿到预调用服务的地址,直接调用该服务

       5. 客户端和服务端在内存中累计调用服务的次数和调用时间,并定时将统计数据发送到监控中心Monitor

 

       Dubbo的实现只需要导入相应的jar包,服务端要发布服务,客户端要调用服务,都需要导入该jar

       ZookeeperMonitor都是独立的服务软件,需要在Linux系统下进行安装。

猜你喜欢

转载自blog.csdn.net/lz1170063911/article/details/80033798