流架构的读书笔记(2)

embedded/2024/12/28 22:05:11/

架构的读书笔记(2)

一、建模工具之一沃德利地图

推测技术的发展,交流和辩论思想的最有力的方法是沃德利地图

沃德利地图的制作步骤
1确定范围和用户需求
2确定满足用户需求所需的组件
3在一条范围从全新到被人们接受的演进轴上评估这些组成
部分的演进过程

地图的横轴是演化进程,从起源,定制,产品,商品四个阶段.
地图的纵轴是价值链的可见性的度量,从不可见到可见的过程.

在做地图的时候,需要问自己的问题有
谁是需要流集成的用户?
一个不太显眼的组件对一个更显眼的组件有什么承诺呢?

二、流架构的主要的组件的简介

定义,创建和控制流连接的接口
定义如何以及何时在两个实体之间传输数据的协议(包括格式化和流控制)

逻辑关联:消费者与生产者协商建立和管理对流的访问的接口
发现:用于发现流的来源并描述其属性(如数据量,使用的协议)的接口

逻辑关联的接口在生产者与消费者(或他们的代理,如有使用)之间
建立了一个关于如何打包和支付数据的契约。这个接口将允许使用者
发送身份验证信息以建立订阅,订阅有效时管理该订阅,以及在不再需要
订阅时关闭该订阅。

使用发现接口来确定流的质量,例如技术流量,负载模式,财务费用等。

接口的例子:HTTP,WEBSocket,MQTT
消息传递协议的例子:MQTT,AMQP,Kafka Connect API ,Kabbit MQ API

源:收集数据的设备或者软件组件
处理器:处理传入的数据的组件
队列:一种代表生产者消费者收集存储转发流数据和事件的机制
接收器:用于显示,存储流结果的组件

容量:执行各种计算任务所需要的时间和资源
商品服务:许多流交互任务所需要的共享计算能力

三、技术演进阶段

起源:独特,罕见,不确定,不断变化,新发现
定制:仍在学习,不寻常,频繁变化
产品:包括租赁,定义更明确,稳定,同一
商品:包括工具集,高度标准化

产品阶段重点是改善运营,维护产品
商品阶段重点是无情地消除偏差,提高工业化程度和运营效率。

四、流架构的前身

实时数据共享的最早尝试只是允许共享访问文件或者是数据库。

组合数据库涉及重写(以及“重新布线如打开新的网络端口”)
现有的应用程序,或者插入新技术来同步两个应用程序的数据库
之间的数据(本质上就是在两个数据库之间创建一个数据流)

软件使用消息队列来实现异步通信。侧重于生产者和消费者解耦,
并提供各种传递保证。

MQTT是一种发布和订阅的协议。
基本操作如下:
1客户端(充当发布者,访阅者或者两者兼而有之)请求与代理连接。
 该连接被分配了一个连接ID,并由客户端和代理监控
2代理管理一个主题列表,使其能够识别对一组消息集合感兴趣的订阅者组
3作为订阅者的客户端请求订阅一个或者多个主题
4充当发布者的客户端向包含相关主题名称的代理发布消息。
5然后,代理使用主题名称将消息路由到适当的客户端

HTTP是一个请求应答的协议
WEBSocket是一个通信的协议

事件处理引擎包括 函数(包括低代码或无代码处理器)
基于日志的流平台,有状态的流处理。

可组合系统通常不会出现在商业平台中,因为这些平台试图通过预定义
关键流程或流程自动化元素来移除工作。

对于平台供应商来说,使用连接器是一种理想的方案,因为它们可以实现
生态系统形成和营销方案的一致性。通过控制谁和什么可以扩展你的平台,
你可以控制品牌,市场契合度和效用。还可以避免由于采用这种可组合的
方法所造成的针对平台的许多奇怪的意想不到的用法。

五、建设一个流的未来的三件事

1确定组织中对接近实时处理的需求,以响应组织软件系统内外状态的变化
2采用“事件优先”策略来架构和操作满足这些需求应用程序和服务,
包括与外部实体集成的地方
3 考虑参与流程标准,相关技术或组织网络的创建,以提高效率或通过流创建
新的市场生态系统。

六、流媒体和服务的四个类别

寻址和发现
命令和控制
查询和可观测性
遥测和分析

在现代复杂的系统环境中,必须跨服务协调工作,以正确定位,表示,
(即分配标识符)并且利用系统范围内的每个新实体和现有的实体。
这就是所谓的寻址和发现。

询问事件流的问题,并且使用该数据来理解行为查询和可观测性侧重于
询问和监控单个代理或特定的(尽管可能很大)组的代理。
而遥测和分析侧重于理解系统行为。

双向对话用消息,单向传信息用事件,事件用于警报,通知,简单状态
更新,系列事件的应用程序包括股票行情,气候数据跟踪,医疗保健监测等。


http://www.ppmy.cn/embedded/149566.html

相关文章

【Spring核心思想】IoC容器与依赖倒置(DI)

在日常开发中,我们总会面临一个问题:如何优雅地管理对象的创建和依赖? 你可能会写一堆代码来手动构造对象,但这种方式繁琐且难以维护。而当项目变得复杂,依赖链拉长,手动管理对象的方式很快就会捉襟见肘。 …

项目文档-代码检查报告

在项目验收阶段会需要很多项目报告,这里记录一下代码检查报告的整理方式。 代码检查报告:项目需要记录每一个改动的代码类,并记录检查结果和修改情况,以及检查人员。 检查结果:是否检查通过 修改情况:暂无需…

用VBA自动更正错误的注释引用序号

将扫描pdf文件进行文字识别时,对带圈数字表示的注释引用和注释序号往往会将数字序号认错。例如下面的文件: 这个文件的段落十分有规律:每首诗的标题样式为标题3,标题下面的段落为诗的正文,下面有一个样式为标题4的段落…

怎么配置每一次重启服务器后,自动启动Tocmat

前言 宝子们,今天来给大家详细讲讲服务器如何配置每次重启后自动启动 Tomcat,让你的服务器应用始终保持在线状态,高效运行! windows版本 在 Windows 系统下,有两种常用的方法可以实现这个目标。 第一种方法是利用服…

SQL 实战:字符串处理函数 – 数据清洗与文本格式化

在数据分析和开发过程中,原始数据往往存在格式不统一、冗余字符等问题,直接影响查询和展示效果。SQL 提供了一系列强大的字符串处理函数,能够帮助开发者进行数据清洗和文本格式化操作,提高数据质量和查询效率。本文将通过多个实战…

Linux下Java通过JNI调用C++

以下为Demo流程 1.创建Java文件 public class HelloWord {// 声明本地方法public native void sayHello();static {// 加载本地库System.loadLibrary("hello");}public static void main(String[] args) {new HelloWord().sayHello();} } 2.编译生成.h头文件 在H…

5.npm包

文章目录 [TOC](文章目录) 3.npm与包3.1.包3.2.npm体验在项目中安装包的命令包管理配置文件一次性安装开发项目时安装的包如何从项目中卸载包devDependencies节点的作用解决下载包速度比较慢的问题nrm工具,利用其提供的终端命令,可以快速查看和切换下包的…

iPhone 17 :史诗级大改,120Hz 全面普及

资深果粉应该都听过一个说法:“iPhone 买单不买双”。这个“规律”似乎在iPhone 16上也得到了印证。 近段时间,各方消息都在指明一点:iPhone 16 只是大餐前的小菜,iPhone 17才是真正带来革命性提升的一代神机。下一代 iPhone 17&…