一个单体应用拆成N个微服务之后,前端访问后端应用的请求路径如何统一?
假设一个单体应用中有三个接口:获取用户信息(/getUser),获取单位信息(/getCompany),获取角色信息(/getRole)
传统的单体应用时怎么访问的?
-
传统的单体应用的前端往往时通过后端应用的IP:PORT来进行访问后端应用的接口
-
http://192.168.172.10:8080/getUser
http://192.168.172.10:8080/getCompany
http://192.168.172.10:8080/getRole
将该单体应用拆分成三个微服务:用户微服务,单位微服务,角色微服务。那该怎么访问呢?
-
由于每个微服务单独部署,对外暴露的IP:PORT都不一样,此时前端访问后端微服务的接口变成:
-
http://192.168.172.10:8080/getUser
http://192.168.172.11:8080/getCompany
http://192.168.172.12:8080/getRole
-
这样的话,前端需要配置和管理每个微服务的访问IP和端口,一旦某个微服务对外暴露的IP或者端口有变化,前端都要进行修改,这样的规划明显不合适,此时可以考虑引入微服务CSE的边缘网关,通过边缘网关来进行拦截前端对后端接口的请求,再由边缘网关转发到具体的微服务进行处理,前端只需要关注边缘网关微服务的Ip和端口即可
如何配置边缘网关?
-
引入边缘网关微服务之后,前端访问后端微服务的接口变成:
-
需要和前端协商好请求路径规则(http://{IP}:{PORT}/api/{微服务名}/具体路径)
-
http://192.168.172.10:8080/api/userservice/getUser
http://192.168.172.10:8080/api/comservice/getCompany
http://192.168.172.10:8080/api/roleservice/getRole
前端只需要关注边缘网关微服务的IP和端口。同时可以在边缘网关层做认证鉴权等操作