前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微服务的10个挑战和解决方案——提示和技巧

微服务的10个挑战和解决方案——提示和技巧

作者头像
程序你好
发布2018-07-23 10:00:15
6430
发布2018-07-23 10:00:15
举报
文章被收录于专栏:程序你好程序你好

我是一个云API开发人员和架构师,目前正在为美国的一个大型零售客户开发基于谷歌GCP的微服务。

向微服务的转换/实现为公司带来了巨大的挑战。基于我在生产中接触到的微服务经验,我阐述一下面临的这些挑战和解决方案。

我写这篇文章是在2018年6月。此时,微服务体系结构还没有成熟到能够完全解决所有现有的挑战,但是,开源社区和IT产品公司正试图解决所有这些问题。所有关于这一主题的新研究都是基于找到应对新挑战的解决方案。

这些是微服务体系结构和所提出的解决方案面临的十大挑战:

1、数据同步——我们使用异步消息传递平台,通过有事件源体系结构来解决这个问题, 可使用saga设计模式可以解决这一挑战。

2、安全性——API网关可以解决这些挑战。Kong非常流行,并且是开源的,很多公司都在生产中使用它。还可以使用JWT令牌、Spring security和Netflix Zuul/ Zuul2为API安全开发定制解决方案。企业解决方案也可用,比如Apigee和Okta(两步身份验证)。Openshift主要用于公共云安全,比如Red Hat Linux基于内核的安全性和基于名称空间的应用程序到应用程序的安全性。

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

4、服务发现——这将由像Kubernetes和OpenShift这样的API发现工具来解决。它也可以在代码级别使用Netflix Eureka完成。但是,在编排层中执行它会更好,并且可以通过这些工具进行管理,而不是通过代码和配置来执行和维护它。

5、数据过时性——数据库应该经常更新以提供最近的数据。API将从最近更新的数据库中获取数据。还可以在数据库中的每个记录中添加时间戳条目,以检查和验证最近的数据。可以使用缓存并根据业务需求定制可接受的驱逐策略。

6、调试和日志记录——有多种解决方案。通过将日志消息推送到Kafka、谷歌PubSub等异步消息平台,可以使用外部化的日志记录。客户端可以在header中提供一个相关ID,以便在所有pods/Docker容器中跟踪相关日志。此外,可以使用IDE单独在每个微服务上进行本地调试或检查日志。

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

8、监控——可以使用开源工具,如Prometheus in combination with Grafana by creating gauge and matrices, Kubernetes/OpensShift, Influx DB, Apigee, combined with Grafana, and Graphite.。

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

10、容错——如果给定SLA/ETA的API没有响应,可以使用Netflix Hystrix进行熔断处理。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序你好 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
CODING DevOps
CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档