微服务的10个挑战和解决方案

北城以北 提交于 2021-01-08 01:27:46

作者:Rajiv Srivastava

翻译:mush

来源:http://mushiming.top/mushblog/archives/823


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

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

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

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

1.数据同步  

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

2.安全性  

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

3.版本控制  

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

4. 发现  

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

5.数据过期 

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

6.调试和记录  

– 有多种解决方案。可以通过将日志消息推送到异步消息传递平台(如Kafka,Google 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可用于断开电路。

Java的架构师历程
mush
专注于为java的工程师提供技术干货的文章平台,使其从小牛历练到大拿,在架构师的路上一路前行,共学习,共进步;  小程序中更多无广告 优质文章,每月送书, 欢迎关注!后台回复的Java技术关键字获取更多学习资源。



长按2秒,识别二维码,关注我。

本文分享自微信公众号 - 码闻强识(mavenTalk)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!