分层:按照业务性质分层,每一层要求简单和容易维护
应用层(展示层):距离用户最近的一层也称为接入层,可以使用Tomcat作为web容器。接受用户请求,使用下游的dubbo提供的接口来返回数据,并且该层禁止访问数据库业务服务层:根据具体的业务场景演变而来的模块,比如简历投递,职位搜书,职位推荐等基础业务层:业务的核心基础服务层:这一层 是与业务无关的模块 是一些通用的服务,这类服务的特点:请求量大 逻辑简单 特性明显 功能独立存储层:不同的存储类型 Mysql Mongodb ES fastDFS
分级:按照业务性质分层,同一层的业务也要做好分级,依据业务的重要性进行分级,按照二八定律,网站80%的流量都在核心功能上面,要优先保证核心业务的稳定。
隔离:不同性质、不同重要性的的做好隔离,包括业务,缓存,DB,中间件都要做好隔离,比如核心业务的数据库要和活动相关的数据库隔离
调用:总体上调用是单向,可以是跨层调用,但不能逆向调用
SOA优点:
服务以接口为粒度,为开发者屏蔽远程调用底层细节,使用Dubbo面向接口远程方法调用,屏蔽了底层调用细节业务分层以后架构更多清晰,并且每个业务模块职责单一,扩展性更强数据隔离,权限回收,数据访问都通过接口,让系统更加稳定,安全服务应用本身无状态化,这里的无状态化指的是应用本身不做内存级缓存,而是把数据存入db服务责任易确定,每个服务可以确定责任人,这样更容易保证服务质量和稳定SOA缺点:
粒度控制复杂,如果没有控制号服务的粒度,服务的模块就会越来越多,就会引发超时,分布式事务瓦内特服务接口数量不宜控制,容易引发接口爆炸,所以服务接口建议以业务场景进行单位划分,并对相近的业务做抽象,防止接口爆炸版本升级兼容困难,尽量不要删除方法、字段,枚举类型的新增字段也可能不兼容调用链路长,服务质量不可监控,调用链路变长,下游抖动可能会影响到上游业务,最终形成连锁反应,服务质量不稳定,同时链路的变成使得服务质量的监控变得困难