技术新、技术范围广、分布式、高并发、集群、负载均衡、高可用、海量数据、业务复杂、系统安全
电商模式:
B2B:商家到商家。阿里巴巴,慧聪网、铭万网。
B2C:商家到用户。京东。
C2C:用户到用户。淘宝。
B2B2C:商家到商家到用户。天猫。
O2O:线上到线下。百度外卖、美团、饿了么。
项目功能总结:
后台管理系统:管理商品、类目以及内容发布等功能。
前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。
订单系统:提供下单、查询订单、修改订单状态、定时处理订单。
搜索系统:提供商品的搜索功能。
单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。传统架构的弊端(并发量):
一个tomcat只有500个并发量,故考虑用ngnix做tomcat集群与负载均衡。
当tomcat集群中节点数量增加,服务能力先增加后下降。所以集群中节点数量不能太多,一般也就5个左右
tomcat集群导致的session共享问题,如一个用户登录用户信息需要保存在session中,使用redis解决(所有tomcat共享redis)
若想获取更高的并发量,需要按照功能点把系统拆分,拆分成独立的功能。单独为某一个节点添加服务器集群。需要系统之间配合才能完成整个业务逻辑。叫做分布式
分布式架构:把系统按照模块拆分成多个子系统。多个子系统相互协作才能完成业务流程。系统之间需要进行通信。
集群:同一个工程部署到多台服务器上。
优点:
1、把模块拆分,使用接口通信,降低模块之间的耦合度。
2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。
3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
4、可以灵活的进行分布式部署。
缺点:
1、系统之间交互需要使用远程通信,接口开发增加工作量。
2、各个模块有一些通用的业务逻辑无法共用。
SOA:Service OrientedArchitecture面向服务的架构。也就是把工程拆分成服务层、表现层两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现
MyEclipse + Maven+svn+ssm+dubbo+redis+solr+activemq
Maven的常见打包方式:jar、war、pom
Pom工程一般都是父工程,管理jar包的版本、maven插件的版本、统一的依赖管理。聚合工程。
Taotao-parent:父工程,打包方式pom,管理jar包的版本号。
|--Taotao-common:通用的工具类通用的pojo。打包方式jar
|--Taotao-manager:服务层工程。聚合工程。Pom工程
|--taotao-manager-dao:打包方式jar
|--taotao-manager-pojo:打包方式jar
|--taotao-manager-interface:打包方式jar
|--taotao-manager-service:打包方式:war
|--taotao-manager-web:表现层工程。打包方式war
使用mybatis官方提供的mybatis-generator生成pojo、mapper接口及映射文件。供整个项目使用
并且将pojo放到toatao-manager-pojo工程中。
将mapper接口及映射文件放到taotao-manager-dao工程中。
如何实现远程通信?
1、Webservice:效率不高基于soap协议。项目中不推荐使用。
2、使用restful形式的服务:http+json。很多项目中应用。如果服务太多,服务之间调用关系混乱,需要治疗服务。
3、使用dubbo。使用rpc协议进行远程调用,直接使用socket通信。传输效率高,并且可以统计出系统之间的调用关系、调用次数。
Dubbo就是资源调度和治理中心的管理工具。