我们没有试图在所有类型的服务客户机上强加相同的服务契约(使用规范模型),而是通过“分离接口”,以便每种类型的客户机都能看到它需要的服务接口 。我们怎么做?一个突出的选择是使用API网关,它可以进行消息格式转换(message format transformation),消息结构转换(message structure transformation),协议桥接(protocol bridging),消息路由(message routing)等 。一个流行的替代方案是BFF(Backend for Frontends)模式 。在这种情况下,我们为每种不同类型的客户机提供了一个API网关,也就是通常说的,为每种客户机提供不同的BFF,如下图所示:
文章插图
三、可部署性几乎在整个软件历史上,设计工作都集中在与实现单元(模块)如何组织以及运行时元素如何交互相关的设计决策上 。架构策略、设计模式和其他设计策略为在层中组织软件元素、避免过度依赖、为特定类型的组件分配特定的角色或关注点以及软件空间中的其他设计决策提供了指导 。对于微服务开发人员来说,有一些关键的设计决策超出了软件元素 。
作为开发人员,我们早就意识到将软件正确打包并部署到适当的运行时环境中的重要性 。然而,我们从没有像今天的微服务那样关注部署和运行时监控 。在这里称为“可部署性”的技术和设计决策领域已经成为微服务成功的关键 。主要原因是一个简单的事实,即微服务显著增加了部署单元的数量 。
因此,IDEALS中的D代表微服务开发者有责任确保软件及其新版本随时可以部署到环境中供用户使用 。总之,可部署性包括:
- 配置运行时基础设施,包括容器、pods、集群、持久性、安全性和网络 。
- 微服务的扩缩容,或者将他们从一个运行时环境迁移到另一个运行时环境 。
- 加速提交+构建+测试+部署过程
- 减少版本升级时的停机时间
- 同步相关软件的版本更改
- 监控微服务运行状况,以快速识别和修复故障 。
实现良好的可部署性
自动化是实现高效部署的关键 。自动化包括明智的使用工具和技术,这是自微服务出现以来不断看到最大变化的领域 。因此,微服务开发人员应该在工具和平台方面寻找新的方向 。但总是质疑每一个新选择的好处和挑战 。(这里可参考Thoughtworks技术雷达和软件架构与设计趋势报告)
以下是开发人员在任何基于微服务的解决方案中为提高可部署性而应该考虑的策略和技术列表:
- 容器化和容器编排:容器化的微服务更容易实现跨平台和云提供商进行复制和部署,而编排平台为路由、扩展、复制、负载均衡等提供了共享资源和机制 。Docker和Kubernetes是当今容器和容器编排的事实标准 。
- 服务网格:这种工具可以用于流量监控,策略执行,身份验证,RBAC,路由,断路器、消息转换等,以帮助容器编排平台中的服务进行通信 。流行的服务网格包括Istio、Linkerd和Consul Connect 。
- API网关:通过拦截对微服务的调用,API网关产品提供了丰富的功能集,包括消息转换和协议桥接、流量监控、安全控制、路由、缓存、请求限制和API配额以及熔断 。这一领域的主要参与者是Ambassador、Kong、Apiman、WSO2 API Manager、Apigee和Amazon API Gateway 。
- 无服务器架构:通过将服务部署到遵循FaaS范式的无服务器平台,可以避免容器编排的复杂性和操作成本 。AWS Lambda、Azure函数和google云函数都是无服务器平台的示例.
- 日志整合工具:微服务可以轻松的将部署单元的数量增加一个数量级 。我们需要工具来整合这些组件的日志输出,以及搜索、分析和生成告警的能力 。这个领域流行的工具有Fluentd、Graylog、Splunk和ELK(Elasticsearch、Logstash、Kibana) 。
- 链路跟踪工具:这些工具可用于检测您的微服务,然后生成、收集和可视化运行时跟踪数据,以显示跨服务的调用 。它可以帮助您发现性能问题 。跟踪工具的例子有Zipkin, Jaeger, and AWS X-Ray,OpenTraceing 。
- DevOps:当开发人员和运维人员可以进行更紧密的沟通和协作时,微服务的工作会更加容易,从基础设施配置到事件处理 。
- 蓝绿部署和金丝雀发布:这些部署策略允许在发布新版本的微服务时实现零或接近零的停机时间,并在出现问题时进行快速切换 。
- 基础设施即代码:这种做法使得构建-部署周期中的交互更少,从而变得更快,更不容易出错,更易于审计 。
推荐阅读
- 企业微信API使用基本教程
- 用云服务器搭建VPN,构建自己的企业专线
- UI后台设计规范总结
- 嵌入式使用emWin进行GUI图形设计教程
- 黑毛茶属于什么茶类,白茶属于轻微发酵茶类
- 客厅电视墙如何设计
- 微商|5年分红4.2亿!官方确认女明星陶虹曾介入张庭传销公司
- ghcr.io GitHub 镜像仓库服务
- 微信群总是有人发广告?看我用Python写一个机器人消灭他
- 戳破微服务的七大谎言