购物商城学习--第一讲(电商系统架构介绍)

学习了taotao商城第二版对应系列的视频,下面开始总结对应用到的技术点以及逐步开发使用到的技术,为以后springboot系列打下坚实的基础吧。以下是B2C电商系统架构,这期视频会涉及到其中一些模块。

传统架构使用表现层+业务层+持久层,访问数据库,单表单库,在并发量小的时候可以应付,但当并发量达到千级别之后,tomcat理论上的处理并发能力在windows上为200个线程,具体tomcat支持并发的相关数据参考https://my.oschina.net/wuminghai/blog/803299所述。单体tomcat超过最大线程数的处理逻辑参照https://blog.csdn.net/Ideality_hunter/article/details/72770813。理论上不建议超过150个线程,这时候就可以考虑tomcat集群,通过nginx反向代理的方式做负载均衡,注意需要处理session共享的问题。原理就是tomcat间隔一定时间广播自己的session信息,从而达到session共享。可是并发量继续往上的话,session广播会造成广播风暴,这个时候就需要考虑将各个功能模块拆分成独立的功能,将所有的session放置在单点登录系统中,通过系统间的配合完成整个业务逻辑,称之为分布式。单独每个功能模块就可以继续使用集群的方式来处理高并发的场景。这样系统架构就被拆分成以下方式:

上面涉及到两个概念:

  • 分布式:多个子系统相互协作完成的业务流程,系统间需要通信;
  • 集群:同一个工程部署到多个服务器上,

基于以上分布式架构部署方式,引入了SOA(service oriented architecture)面向服务的概念,将工程拆分成服务层和表现层。服务层没有界面,只对外提供服务即可。表现层处理和页面的交互,通过调用服务层的服务来实现。比如订单系统需要查询商品服务,前台系统也需要查询商品服务,因为把商品服务独立出来了,做到了代码复用,调用接口即可。

因为引入分布式架构,需要系统间通信,可以使用基于soap协议(http+xml)的webservice通信方式,也可以使用restful(http+json)风格,或者使用socket协议(典型的如dubbo消息中间件)通信方式进行数据传递(socket(tcp/udp在网络层)传输效率高于http协议(在应用层))。服务层和数据库之间添加了redis缓存NoSQL数据库,提升重复性查询效率。持久层为mysql集群,由mycat数据库中间件来管理。solr服务处理查询,通过建立索引库来实现。消息队列专门用来处理各个模块之间的消息。最终我们的商城系统架构图如下图所示:

 

posted @ 2018-09-20 00:05  birdman-peter  阅读(3251)  评论(0编辑  收藏  举报