我正在开展一个侧面项目,并且我将我的Skelton项目重新设计为微服务,到目前为止我没有找到任何遵循这种模式的开源项目。经过大量的阅读和搜索,我总结了这个设计,但我仍然有一些问题和想法。
以下是我的问题和想法:
答案 0 :(得分:9)
你的设计似乎没问题。我们还使用API网关方法构建我们的微服务项目。包括网关服务(GW)在内的所有服务都是容器化(我们使用docker) Java应用程序( spring boot 或 dropwizard )。也可以使用nodejs构建类似的体系结构。与您的问题相关的一些主题:
答案 1 :(得分:3)
你的设计还可以。
如果你的API网关需要实现(可能就是这种情况)CAS /某种Auth(通过其中一种服务 - 即某种用户服务),还应该跟踪所有请求并修改标题承担请求者元数据(用于内部ACL /作用域) - 您的API网关应该在Node中完成,但应该在Haproxy下,它将关心负载平衡/ HTTPS
发现处于正确的位置 - 如果你找到一个适合你的设计,但Consul无处可寻。
您可以使用consul-template或将自己的微发现框架用于服务和API网关,以便它们在启动时共享端点数据。
每个服务都应实施ACL /授权,API Gateway的第一个请求应受所有授权中间件的约束。
通过API Gateway为每个请求提供请求ID来跟踪请求非常智能,因此可以在内部"内部跟踪生命周期。系统
我会为消息传递/工作人员/队列/快速内存中的内容添加Redis,例如缓存/缓存失效(您无法处理所有MS架构) - 或者如果您有更多内容,请使用RabbitMQ分布式交易和很多消息
在容器(Docker)上旋转所有这些,以便更容易维护和组装。
至于BI为什么需要服务呢?你可以拥有外部ELK Elastisearch,Logstash,Kibana),并且可以同时拥有仪表板,日志聚合和庞大的大数据仓库。