垂直架构
特点
- 不管项目多复杂,有多少个模块,全在一个项目中编写
- 项目部署在一个web容器上,适合于 访问量小,用户数不多的业务
优点
- 耦合度比较高
- 所有功能模板代码都放到了一起,
- 不利于扩展
- 写好了, 测试完了,想要加一个模块非常的困难
- 如果果某个功能出错有问题,所有的功能都需要再重新打包编译,部署效率极低。
- 上线时, 把项目停掉
- 不利于团队协作维护
- 团队协作难度高,如多人使用SVN/git很可能在同一个功能上,多人同时进行了修改,作为一个大而全的项目,可能个人只是需要开发其中一个小的模块的需求,却需要导入整个项目全量的代码。
缺点
- 结构简单
分布式架构(SOA架构)
SOA(Service-Oriented Architecture)它是一种支持面向服务的架构。(分布式架构)
特点
- 将传统项目中的一个模块,拆分成一个一个项目
优点
- 降低模块之间的耦合度
- 利于扩展
- 利于维护
缺点
- 结构复杂
- 对于小型项目 ,成本比较高
特点
- 模块的拆分
- 如果某一个系统访问量比较大时, 可以多部署几台tomcat,
- 当出现高并发的时候 , 通过nigix负载均衡,进行分配访问
- 如果今后, 想要再添加 一个模块, 可以直接在写一个项目,弄台新机器,直接上线
- 业务功能的拆分
- 除了把对应模块拆成一个系统外, 还可以把我们的三层架构拆成对应的服务,把Controller做为一个系统,Dao和Service做为一个系统
- 如果调用多了,一台不够用户了, 可以多部署几台
- 存在的问题
- 在以前Controller调用Service,通过注入进行调用,注入属于是Spring的
- 当Controller在一个服务器中, Service在另一台服务器,是没有办法注入的
- 此时, 可以采用一个技术叫Dubbox,可以实现跨tomcat 注入 远程调用
- Dubbo是的跨服务器,注入的技术,这么多服务,到底是认认证调用谁,怎么知道的呢
- 通过zookeeper注册中心,所有的服务都到zookeeper当中注册一下, 注册后.
- 今后服务之间的调用,就可以通过zookeeper找到对应的服务,通过Dubbo进入注入