Cayambe monolith
它是一个古老的在线交易网站,我们试图完成对他的改造。先看看他的现状:
1. 页面非常古老
2. 属于单体架构
改造后的预期架构:
迁移策略:先拆分管理网站
将管理页面拆分出来,以便于单独对用户交互的页面进行扩展,而不是将管理页一并扩展。(解决单体的问题)
原有的管理页面:
功能相对简单,页面非常古老。
我们将使用JAX-RS与ReactJS进行改造:
目前,我们要完成的是这一部分的改造:
管理页面需要提供的功能
通过UI页面完成对category的增删改查操作。
此功能模块的架构是:
视图层使用ReactJS, API层提供Rest接口,数据层使用JPA提供数据持久化服务。
在传统的设计架构中,所有的层需要部署到同一个war包里,导致管理和扩展的不便。
我们将其采用微服务的方式进行部署:
将接口层及数据访问层合并为微服务层,对外通过rest接口的形式提供服务,将原有的单体架构拆分为视图层和微服务层。
因为这样视图层与接口分别部署,会带来非同源访问的问题,需要支持CORS:
如果你的微服务是在网关后面提供服务的,直接在网关进行CORS配置即可。
API层开发
这里我们仅仅考虑API的设计,先忽略JPA的具体实现。
设计应用的根目录:
这里给出了应用的根目录(使用ApplicationPath注解)
设计rest节点:
使用@Path标记当前节点的url
@PersistenceContext表示持久层上下文。
@Produces表示返回的数据转为json
@GET表示动作方法为GET
删除动作节点:
根据categoryId删除分类。
@Transactional表示开启事务。
添加动作节点:
@Consumes表示接受的数据类型
配置打包插件
启动项目
启动API:
启动UI: