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

我是一个云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进行熔断处理。

原文发布于微信公众号 - 程序你好(codinghello)

原文发表时间:2018-07-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Spark学习技巧

第5篇:数据库系统的实现

前言 前面的文章中,主要都是在围绕关系数据库理论进行研究,没有涉及到数据库系统的具体实现。 虽说数据库系统的具体实现因业务环境,RDBMS等因素而异,但总体开发...

32170
来自专栏CSDN技术头条

分享九款构建响应式网站的最佳PHP框架

目前,网上有大量的框架供大家选择,本文作者分享了9款各方面都兼具优势的PHP框架,主要用来构建响应式网站,开发人员可以根据自己的需求来选择下面的某一个框架。 ...

30270
来自专栏程序你好

如何从传统单体架构转向微服务

15940
来自专栏EAWorld

讲讲拆分:从单体式应用到微服务的低风险演变

作者:Christian Posta 译者:海松 原题:Low-risk Monolith to Microservice Evolution Part I...

27740
来自专栏云之翼

如何利用腾讯云BGP网络提升客户外网出口的冗余

最近几年,互联网公司发展迅速,有很多互联网公司本身的基础架构都构建在一些公有云厂商之上,除了节省初期投资之外,另外也是借助于一些大的云厂商本身的网络能力,实现业...

33320
来自专栏我的博客

wamp2.0配置Zend Optimizer

1、下载http://www.filecluster.com/downloads/Zend-Optimizer.html 2、选择安装位置 image.png ...

31040
来自专栏杨建荣的学习笔记

Active Data Guard初探(一) (r10笔记第76天)

对于Active Data Guard,我是这样想的,可能会有很多不对的地方,互相讨论,一起补充吧。 如果有一天我成了Oracle的产品架构师,时光倒退...

34190
来自专栏ImportSource

我所知道的那点微服务

忽然一夜春风来,人间处处微服务。这真是一个相当火的概念啊。笔者第一次知道微服务这个概念是在15年4月份,应该是。 铺垫 有一日翻到martin fowler的博...

375100
来自专栏java思维导图

什么是REST架构?

REST架构风格是全新的针对Web应用的开发风格,是当今世界最成功的互联网超媒体分布式系统架构,它使得人们真正理解了Http协议本来面貌。随着 REST架构成为...

11220
来自专栏云计算D1net

六款不容错过的开源持续集成工具

持续集成是敏捷软件开发工作当中的一大组成部分。从一轮冲刺到下一轮冲刺,技术团队在“不断前进”的同时持续推出各类增量化功能。不过当开发人员高度专注于添加功能的同时...

36970

扫码关注云+社区

领取腾讯云代金券