在Redox,我们’采取务实的方法来构建微服务,尤其是在我们如何处理跨领域关注方面。大多数人将微服务生态系统的这一部分称为基础,这是每个微服务都需要具备的东西,我们才能对此充满信心’是优质的产品。机箱包括:
- 记录中
- 指标报告和检测
- 容错(阿拉·海斯特里克斯)
- 错误报告
- 跟踪(尤其是通过多种服务)
- 所有内容的默认值(如何构建项目,运行,测试,格式化代码等)
然后’我只是想到的前六个。使事情变得复杂的是,您需要一个用于堆栈中每种语言/平台的底盘。
此时,您’重新感到不知所措或同情(因为您’ve been through this). 那里 are numerous frameworks out there to make things easier, such as 小发明 , 菲纳格 , 要么 微点 他们每个人都对配置类型决策有不同程度的约定’ve made for you.
注意: 我们的微服务之旅,第一部分:开始 和 来自工程博客:Redox微服务之旅第二部分,原理 关于这个微服务项目的部分,有很棒的故事。
轻松做正确的事
最终存在框架可以使新浪体育新闻人员轻松地做正确的事。像上述那些微服务框架需要反映组织的现有价值和流程;如果他们不这样做’t fit, or they don’要与您现有的基础架构匹配,您需要对其进行修复或以自己的方式进行。
那’s the main reason we’不要使用这些框架之一。我们已经拥有一个非常强大的基础架构来处理其中的一些问题,并且我们’在整体结构中内置了通常可在整体结构外部扩展的工具。
通常,这些跨领域的关注分为两个方面:
- 您免费获得的在Redox基础架构上运行的功能
- 要求新浪体育新闻人员在软件中实现模式的功能
第一个示例是日志记录-我们任何服务中记录的所有内容都会自动通过管道传递到日志聚合器。
第二个例子是使用Hystrix-我们将常见的调用包装在使这容易实现的库中,但是新浪体育新闻人员仍然需要知道如何设计断路器,因此他们将Hystrix用于新的端点。
希望做正确的事
微服务框架的另一个功能是“实现一个接口”模式。换句话说,您必须以自以为是的方式实现事物,然后免费获得大量其他东西。这种方法不仅使执行正确的事情变得容易,而且使执行错误的事情变得不可能—您的代码赢得了’t compile.
那里’采用更自以为是的方法并没有错,但是要权衡利弊。当我是Epic的新浪体育新闻人员时,他们的桌面和Web框架给我留下了深刻的印象。作为新成立的Epic新浪体育新闻人员,您可以将UI贴合在一起,实现一些接口,然后您的新视图可以与整体应用程序集成。允许成千上万的新浪体育新闻人员在同一平台上工作,证明了良好的体系结构。尽管如此,唯一的选择是VB6或Web新浪体育新闻的Epic版本(很多服务器端C#渲染)。
氧化还原面临许多具有挑战性的医疗保健问题,我们需要能够为正确的工作选择正确的工具。我们喜欢无服务器(请参阅 AWS Lambda已获得HIPAA资格一个月,并且’s Awesome), 而且我们也喜欢Docker,这使我们相对容易用新语言构建新事物。
对于我们来说,不强制执行自上而下的规则集而是有意义的是做正确的事情是更有意义的。这些可能以胡萝卜或棍子的形式出现,但是其基本主题是为人们做正确的事情提供切实的,有形的激励。
使它适合对事物的示例包括:
- (胡萝卜)站起来 惊人的Hystrix仪表板 这样新浪体育新闻人员就可以看到做正确的事的影响
- (粘)拒绝不执行的请求’没有包含跟踪,因此它将永远无法使用
- (胡萝卜)良好的起点,尤其是默认值时
- (提示)在发生日志和页面新浪体育新闻人员时检测错误
第一步
我们建立这些激励措施的方法已经在进行中(并且与本系列的后续文章很好地吻合)。我们的第一步如下所示:
- 让一些新浪体育新闻人员坐下来,消除我们现有微服务之间的差异。如果你不这样做’首先要有服务清单。
- 找到差异并进行标准化(希望您选择开放的新浪体育新闻人员来妥协)。例如,我们就编译Typescript与ts-node进行了长时间的讨论。 (如果您想听听我们的决定,请给我下一行。)
- 将所有建议放到一个服务中-它可以是真实的建议,也可以只是要复制的简单服务。
- 确定需要更多时间的事物,并确保人们随着新浪体育新闻而跟踪工作
您可以开始识别您想要随时使用的这些模式和默认值,并在您的基础架构,安全性,CI / CD和其他基本组件联机时将它们集成。
哦,如果您想帮助我们进行微服务, 我们正在招聘!