我是一名云API开发人员和架构师,目前正致力于为美国的大型零售客户提供基于Google GCP的微服务。

过渡/实施微服务给组织带来了重大挑战。基于我对生产中的微服务的曝光,我已经确定了这些挑战和解决方案。

我在2018年6月写这篇文章。目前,微服务架构尚未成熟到足以完全解决所有现有挑战,但是,开源社区和IT产品公司正试图解决所有这些未解决的问题。关于这一主题的所有新研究都是基于寻找新挑战的解决方案。

这些是微服务架构和提出的解决方案的十大挑战:

1.数据同步 – 我们使用事件源代码架构来使用异步消息传递平台解决此问题。传奇设计模式可以应对这一挑战。

2.安全
API网关可以解决这些挑战。Kong非常受欢迎,并且是开源的,并且正在被许多公司用于生产。还可以使用JWT令牌,Spring
Security和Netflix Zuul /
Zuul2为API安全性开发自定义解决方案。还有企业解决方案,如Apigee和Okta(两步认证)。Openshift用于公共云安全的顶级功能,如基于Red
Linux Kernel的安全性和基于命名空间的app-to-app安全性。

3.版本控制 – 这将由API注册表和发现API使用动态Swagger API处理,动态Swagger API可以动态更新并与服务器上的使用者共享

4. 发现 – 这将由Kubernetes和OpenShift等API发现工具解决。它也可以在代码级使用Netflix Eureka完成。但是,使用业务流程层执行此操作会更好,并且可以通过这些工具进行管理,而不是通过代码和配置进行维护。

5.数据过期 – 应始终更新数据库以提供最新数据。API将从最近更新的数据库中获取数据。还可以为数据库中的每个记录添加时间戳条目,以检查和验证最近的数据。可以根据业务需求使用可定义的驱逐策略来使用和自定义缓存

6.调试和记录
有多种解决方案。可以通过将日志消息推送到异步消息传递平台(如Kafka,
PubSub等)来使用外化日志记录。客户端可以在标头中为REST API提供关联ID,以跟踪所有pod /
Docker容器中的相关日志。此外,可以使用IDE或检查日志在每个微服务上单独完成本地调试。

7.测试 可以通过模拟REST
API或集成/依赖API来解决此问题,这些API不可用于使用WireMock,BDD,Cucumber,集成测试,使用JMeter进行性能测试以及任何良好的分析工具(如Jprofiler)进行测试,
DynaTrace,YourToolKit,VisualVM等

8.监控 – 监控可以使用开源工具,如Prometheus与Grafana结合使用,创建仪表和矩阵,Kubernetes / OpensShift,Influx DB,Apigee,结合Grafana和Graphite。

9. DevOps支持 – 使用最先进的DevOps工具(如GCP,Kubernetes和OpenShift与Jenkins)可以解决微服务部署和支持相关的挑战。

10.容错 – 如果给定SLA / ETA的API没有响应,Netflix Hystrix可用于断开电路。

文章来源:https://dzone.com/articles/10-challenges-of-microservices-and-solutions-tips