我目前的设计是让客户端使用浏览器连接到我的(
Java)Web API网关,Web API网关将调用每个(Java)微服务来获取他们的
JSON数据并将其返回到在客户端上发出请求的UI组件.
唯一的客户端呈现将来自每个ReactJS UI组件,用于重复发送到网关的请求.
在服务器端,将在发送回客户端之前呈现完整的HTML视图.
Client browser
▼ (Request Dashboard View)
Web API Gateway
▼ (Request microservice JSON data)
Microservice A JSON Data
Microservice B JSON Data
Microservice C JSON Data
Microservice D JSON Data
▼ (Return JSON Data to gateway)
Web API Gateway
▼ (Render HTML and return to Client)
Client browser
▼ (ReactJS UI Components request data from API Gateway)
这是不清楚的地方,是否最好让每个UI组件与Web API网关或它来自的微服务器进行通信以获取数据?
注意事项
>让UI组件与Web API Gateway通信似乎是合理的,但会将微服务耦合到网关,这意味着在微服务上公开新的API,网关也需要更新.
>让UI组件直接与其微服务通信以获取数据,这样就无需更新Web API网关,从而减少了它们的耦合.但是这会将微服务暴露给来自客户端浏览器的外部调用.
设计决策
>让API组件中的UI组件创建一个UI整体,而不是让每个微服务负责其自己的UI组件.使用单片方法简化了解决方案,并且还避免了在客户端请求特定视图时必须聚合每个微服务UI组件的复杂性.
工具:
> Java
> Nashorn
> Dropwizard
> ReactJS
> Gradle
> Webpack
> NodeJS
> NPM
如何使用Java和ReactJS在Web API网关上聚合多个微服务ui组件,然后将此预呈现的HTML数据与JavaScript应用程序一起提供给客户端?
有用的参考: