IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 微服务架构系列主题:微服务实现的反模式及正确做法 -> 正文阅读

[开发测试]微服务架构系列主题:微服务实现的反模式及正确做法

前言

程序员在程序开发的时候,经常会使用到设计模式,或在面试过程中也经常被提问到设计模式。

所以大家对设计模式比较熟悉了,但大家知道“反模式”吗,什么叫“反模式”?怎样才能避免“反模式”的发生。所以今天的文章,我会从三部分的内容进行讲解。

1. 重新理解一下“模式”和“反模式”的定义

2. 基于微服务实现的“反模式”

3. 微服务的正确做法,来避免“反模式”的发生

1. 重新理解一下“模式”和“反模式”的定义

我们看一下“模式”和“反模式”在维基百科的定义。

根据维基百科的定义,设计模式是一套被反复使用,多数人知晓的,经过分类编目的代码设计经验的总结,是软件设计的某些特定场合的某些问题的解决思路。是前人经过大量的实践,总结出来的无论从效率、扩展性、复用性、可靠性等方面都显现出优势的解决思路。

反模式(anti-pattern)指的则是在实践中明显出现,但低效或有待优化的设计模式,是用来解决问题的带有共同性的不良方法。

2. 基于微服务实现的“反模式”

以下是我从架构,交付和运维,产品,组织,技术这几个维度总结出来的,微服务实现的“反模式”,供大家借鉴参考。

分类

反模式影响

架构

使用微服务并没有判断其复杂性

在没有投资回报的情况下承担复杂性成本

试图使用工具来解决问题

看不到预期的好处,架构的保质期缩短

没有针对于可扩展性进行进行架构设计

在没有充分利用的情况下导致微服务体系结构的复杂性

试图在跨服务中保持事务的意图

最终,不工作。但很多的时间被浪费在流程当中,因此成功被延期了。

没有针对于可扩展性进行架构设计

架构变得脆弱 -? 局部的失败级联到整体

没有封装数据

服务变得耦合

没有针对内部服务通信进行设计

能导致服务耦合,导致不必要的通信失败。

服务过大

架构没有产生预期的结果

服务过小

由于失去高能聚,变得难于维护。

交付和运维

没有自动化的软件交互和运维

微服务变得难于维护,人为干预造成很多问题。

没有自动化的资源分配

手动很难做,能导致大量的过度资源很配

没有构建质量

浪费的,使自动化软件交付变得很难。

没有调整测试方法

导致质量变差,可用性变低

产品

没有调整用户界面随着一致性模型改变

能导致误导产品界面和数据质量问题发生

组织

没有针对去中心化执行进行操作模式的变化

阻止服务的独立运维

基于软件组件或技术进行构建

服务变得耦合

保持开发团队和业务分离

能导致低质量和时间缺失

没有把人作为成功的因素

很差的质量,时间浪费,没有看到预期结果。

技术

没有治理组织的技术演变

能导致长期的技术债

没有安全管理

假如没有被积极的管理,微服务可以打开很多的攻击载体。

3. 微服务的正确做法,来避免“反模式”的发生

所以针对于以上的微服务实现的“反模式”,以下是微服务应该被实现具备的特性,来避免“反模式”的发生。

微服务应该被实现具备以下特性:

? 服务按照业务能力进行构建
? 务是小的,并聚焦的
? 服务内部逻辑被封装,对于其它服务不可见
? 架构需具备可扩展性和弹性
? 服务集成通过正式的 API, 使 用合适的契约,版本,序列化,传输等
? 架构为云做好了准备,即使在短期内没有上云的计划
? 内部服务的通讯模式已确定
? 设计支持通信架构(网关,服务网格等)
? 操作模型被确立:
? 促进去中心化执行
? 促进技术的演进
? 支持跨职能团队基于业务能力进行组织,与业务紧密相关
? 跨职能团队围绕业务能力被组织,被服务支持
? 服务之间彼此独立的开发,交付和运维。
? 优秀的技术实践被使用,例如: 元测试, TDD BDD
? 软件交付,测试,运维是自动化的
? 资源分配 是自动化的
? 全被积极的管理,并集成到软件的生命周期
所以在使用微服务架构的过程中,需要避免微服务实现的“反模式”发生,这样你才能得到微服务架构带来的好处。
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-08-25 12:30:46  更:2021-08-25 12:32:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 22:47:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码