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

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

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

我在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.版本控制  app

– 这将由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技术关键字获取更多学习资源。

图片

相关文章
相关标签/搜索