精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SpringBoot+Nacos+Kafka實現微服務流編排

開發 架構
流編排的思路整體來說就是數據流方向可調,我們以此為需求,根據一些主流框架提供的 api 實現自己的動態調整方案,可以幫助自己更好的理解流編碼思想及原理。

?前言

微服務開發涉及了一些數據處理模塊的開發,每個處理業務都會開發獨立的微服務,便于后面拓展和流編排。

學習了 SpringCloud Data Flow 等框架,感覺這個框架對于我們來說太重了,維護起來也比較麻煩,于是根據流編排的思想,基于我們目前的技術棧實現簡單的流編排功能。

簡單的說,我們希望自己的流編排就是微服務可插拔,微服務數據入口及輸出可不停機修改。

準備工作

Nacos 安裝及使用入門

自己學習的話推薦使用 docker 安裝,命令如下:

拉取鏡像:

docker pull nacos/nacos-server

創建服務:

docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server

然后在瀏覽器輸入 ip:8848/nacos,賬號 nacos;密碼 nacos。

圖片

docker 能夠幫助我們快速安裝服務,減少再環境準備花的時間。

準備三個 SpringBoot 服務,引入 Nacos 及 Kafka

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
</parent>

<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>

<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>0.2.1</version>
</dependency>

配置文件:

spring:
kafka:
bootstrap-servers: kafka-server:9092
producer:
acks: all
consumer:
group-id: node1-group #三個服務分別為node1 node2 node3
enable-auto-commit: false
# 部署的nacos服務
nacos:
config:
server-addr: nacos-server:8848

建議配置本機 host 就可以填寫 xxx-server 不用填寫服務 ip。

業務解讀

我們現在需要對三個服務進行編排,保障每個服務可以插拔,也可以調整服務的位置。

圖片

示意圖如上:

  • node1 服務監聽前置服務發送的數據流,輸入的 topic 為前置數據服務輸出 topic
  • node2 監聽 node1 處理后的數據,所以 node2 監聽的 topic 為 node1 輸出的 topic,node3 同理,最終 node3 處理完成后將數據發送到數據流終點
  • 我們現在要調整流程移除 node2-server,我們只需要把 node1-sink 改變成 node2-sink 即可,這樣我們這幾個服務就可以靈活的嵌入的不同項目的數據流處理業務中,做到即插即用(當然,數據格式這些業務層面的都是需要約定好的)
  • 動態可調還可以保證服務某一節點出現問題時候,即時改變數據流向,比如發送到數暫存服務,避免 Kafka 中積累太多數據,吞吐不平衡

 Nacos 配置

①創建配置

通常流編排里面每個服務都有一個輸入及輸出,分別為 input 及 sink,所以每個服務我們需要配置兩個 topic,分別是 input-topic output-topic,我們就在 nacos 里面添加輸入輸出配置。

nacos 配置項需要配置 groupId,dataId,通常我們用服務名稱作為 groupId,配置項的名稱作為 dataId。

如 node1-server 服務有一個 input 配置項,配置如下:

圖片

完成其中一個服務的配置,其它服務參考下圖配置即可:

圖片

②讀取配置

代碼如下:

@Configuration
@NacosPropertySource(dataId = "input", groupId = "node1-server", autoRefreshed = true)
// autoRefreshed=true指的是nacos中配置發生改變后會刷新,false代表只會使用服務啟動時候讀取到的值
@NacosPropertySource(dataId = "sink", groupId = "node1-server", autoRefreshed = true)
public class NacosConfig {

@NacosValue(value = "${input:}", autoRefreshed = true)
private String input;

@NacosValue(value = "${sink:}", autoRefreshed = true)
private String sink;

public String getInput() {
return input;
}

public String getSink() {
return sink;
}
}

③監聽配置改變

服務的輸入需要在服務啟動時候創建消費者,在 topic 發生改變時候重新創建消費者,移除舊 topic 的消費者,輸出是業務驅動的,無需監聽改變,在每次發送時候讀取到的都是最新配置的 topic。

因為在上面的配置類中 autoRefreshed = true,這個只會刷新 nacosConfig 中的配置值,服務需要知道配置改變去驅動消費的創建業務,需要創建 nacos 配置監聽。

/**
* 監聽Nacos配置改變,創建消費者,更新消費
*/
@Component
public class ConsumerManager {

@Value("${spring.kafka.bootstrap-servers}")
private String servers;

@Value("${spring.kafka.consumer.enable-auto-commit}")
private boolean enableAutoCommit;

@Value("${spring.kafka.consumer.group-id}")
private boolean groupId;

@Autowired
private NacosConfig nacosConfig;

@Autowired
private KafkaTemplate kafkaTemplate;

// 用于存放當前消費者使用的topic
private String topic;

// 用于執行消費者線程
private ExecutorService executorService;

/**
* 監聽input
*/
@NacosConfigListener(dataId = "node1-server", groupId = "input")
public void inputListener(String input) {
// 這個監聽觸發的時候 實際NacosConfig中input的值已經是最新的值了 我們只是需要這個監聽觸發我們更新消費者的業務
String inputTopic = nacosConfig.getInput();
// 我使用nacosConfig中讀取的原因是因為監聽到內容是input=xxxx而不是xxxx,如果使用需要自己截取一下,nacosConfig中的內容框架會處理好,大家看一下第一張圖的配置內容就明白了
// 先檢查當前局部變量topic是否有值,有值代表是更新消費者,沒有值只需要創建即可
if(topic != null) {
// 停止舊的消費者線程
executorService.shutdownNow();
executorService == null;
}
// 根據為新的topic創建消費者
topic = inputTopic;
ThreadFactory threadFactory = new ThreadFactoryBuilder().setNameFormat(topic + "-pool-%d").build();
executorService = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(2), threadFactory);
// 執行消費業務
executorService.execute(() -> consumer(topic));
}

/**
* 創建消費者
*/
public void consumer(String topic) {
Properties properties = new Properties();
properties.put("bootstrap.servers", servers);
properties.put("enable.auto.commit", enableAutoCommit);
properties.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
properties.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
properties.put("group.id", groupId);
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(properties);
consumer.subscribe(Arrays.asList(topic));
try {
while (!Thread.currentThread().isInterrupted()) {
Duration duration = Duration.ofSeconds(1L);
ConsumerRecords<String, String> records = consumer.poll(duration);
for (ConsumerRecord<String, String> record : records) {
String message = record.value();
// 執行數據處理業務 省略業務實現
String handleMessage = handle(message);
// 處理完成后發送到下一個節點
kafkaTemplate.send(nacosConfig.getSink(), handleMessage);
}
}
consumer.commitAsync();
}
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
} finally {
try {
consumer.commitSync();
} finally {
consumer.close();
}
}
}
}

總結

流編排的思路整體來說就是數據流方向可調,我們以此為需求,根據一些主流框架提供的 api 實現自己的動態調整方案,可以幫助自己更好的理解流編碼思想及原理。

在實際業務中,還有許多業務問題需要去突破,我們這樣處理更多是因為服務可插拔,便于流處理微服務在項目靈活搭配。

責任編輯:武曉燕 來源: 碼猿技術專欄
相關推薦

2022-10-08 07:31:26

微服務編排體系

2024-07-09 10:57:29

2021-12-02 16:20:17

開源微服務框架

2023-10-26 23:35:02

SSH登錄部署

2021-07-07 07:44:20

微服務Nacos緩存

2025-05-21 01:00:55

2021-01-12 09:38:02

微服務服務組合編排

2021-04-18 07:33:20

項目Springboot Nacos

2020-06-29 07:58:18

ZooKeeperConsul 注冊中心

2023-06-25 08:12:02

2022-03-23 09:00:00

微服務KafkaChronicle

2021-08-30 11:36:23

微服務開發技術

2021-08-06 22:53:20

微服務開發前端

2019-02-28 09:22:37

Nacos微服務DNS

2025-05-27 02:55:00

Spring微服務

2022-04-28 07:31:41

Springkafka數據量

2025-05-13 04:15:00

2021-03-23 15:50:53

微服務架構互聯網

2023-12-07 08:07:10

2024-01-05 16:46:26

點贊
收藏

51CTO技術棧公眾號

免费黄色在线网址| 超碰在线免费观看97| 狠狠躁夜夜躁人人爽天天高潮| 日韩一级电影| 欧美人成免费网站| www.夜夜爱| 触手亚洲一区二区三区| 国产乱人伦偷精品视频不卡| 性欧美激情精品| 黄色av片三级三级三级免费看| 日本一区影院| 91久久香蕉国产日韩欧美9色| 中文字幕一区二区三区5566| 婷婷丁香一区二区三区| 久久激情五月激情| 欧美一区二区三区免费观看| 夫妻性生活毛片| 自拍亚洲一区| 欧美不卡激情三级在线观看| 成人性做爰aaa片免费看不忠| 欧美人体视频xxxxx| 国产欧美日韩不卡| 久久国产精品免费一区| 久久综合九色综合88i| 欧美激情国产精品免费| 成人影院在线| 亚洲剧情一区二区| 人妻 丝袜美腿 中文字幕| 123成人网| 色综合天天综合网国产成人综合天| 黄色网址在线免费看| 激情小视频在线| 成人av免费观看| 亚洲一区二区自拍| 一级视频在线播放| 手机精品视频在线观看| 欧美在线性爱视频| 亚洲视频免费播放| 激情综合在线| 欧美高跟鞋交xxxxhd| 女性裸体视频网站| 久久国产亚洲精品| 尤物精品国产第一福利三区| 亚洲专区区免费| 久久夜色电影| 亚洲国产精品高清久久久| 中文字幕人妻无码系列第三区| 国产69精品久久| 欧美性一级生活| www日韩视频| 日韩大尺度黄色| 色婷婷综合中文久久一本| 欧美日韩在线中文| 性xxxxfreexxxxx欧美丶| 亚洲h在线观看| 欧美日韩精品在线一区二区| 免费成人在线电影| 狠狠做深爱婷婷久久综合一区| 毛片在线视频播放| www.51av欧美视频| 精品国产精品三级精品av网址| 97视频久久久| 粉嫩一区二区| 欧美综合一区二区| 美女在线视频一区二区| 国产一区二区三区免费在线| 欧美一级片免费看| 日本wwwwwww| 国产伦精品一区二区三区在线播放| 亚洲国产精品久久91精品| 亚洲av无码一区二区三区观看 | 99久久精品久久久久久ai换脸| 精品人妻av一区二区三区| 粉嫩蜜臀av国产精品网站| 国产成人女人毛片视频在线| 天天操天天射天天舔| 久久先锋影音av鲁色资源网| 亚洲春色在线| 中中文字幕av在线| 精品国产999| 校园春色 亚洲色图| 国产精品3区| 精品盗摄一区二区三区| 欧美熟妇一区二区| 99re66热这里只有精品8| 操日韩av在线电影| 在线观看亚洲欧美| 另类小说视频一区二区| 91传媒视频免费| 亚洲欧美日韩精品永久在线| 欧美激情一区不卡| www.一区二区.com| 东京一区二区| 欧美一区二区黄| 色婷婷免费视频| 成人精品电影| 欧美精品久久久久a| 波多野结衣黄色| 国产麻豆精品久久一二三| 国产精品永久入口久久久| 国产在线视频网站| 亚洲一区二区高清| 亚洲36d大奶网| 精品亚洲精品| 久久综合色88| 成人黄色激情视频| 成人激情午夜影院| 在线视频91| 伊人久久av| 精品国产91乱码一区二区三区 | 日韩欧美成人网| 欧美性猛交xxxx乱大交91| 日韩在线麻豆| 九九热视频这里只有精品| 国产一级片免费在线观看| 国产成人99久久亚洲综合精品| 日韩在线电影一区| 性xxxxfreexxxxx欧美丶| 日韩欧美一级在线播放| 中文字幕精品亚洲| 久久一区亚洲| 含羞草久久爱69一区| av在线free| 欧美午夜电影网| 人妻熟女aⅴ一区二区三区汇编| 欧美精品aa| 国产主播在线一区| 免费成人美女女在线观看| 欧美精品日本| 国产欧美日韩中文| 国产福利小视频在线| 亚洲成人福利片| 黑人性生活视频| 97精品一区| 国产精品久久网| 韩日在线视频| 91国产福利在线| 91精彩刺激对白露脸偷拍| 亚洲欧洲另类| 国产一区二区不卡视频在线观看| av网站在线看| 91精品国产一区二区三区蜜臀 | 欧美日韩精品在线播放| 亚洲国产精品第一页| 欧美成人嫩草网站| 亚洲精品欧美日韩| 韩国av网站在线| 69成人精品免费视频| 亚洲天堂网av在线| 精品一区二区三区在线观看国产| 午夜精品一区二区在线观看的| 国模一区二区| 中文字幕亚洲一区在线观看| 最好看的日本字幕mv视频大全| 国产视频在线观看一区二区三区| 久久久久国产精品熟女影院| 精品久久一区| 国产精品亚洲精品| 黄色网址在线免费播放| 日韩三级电影网址| 久久在线视频精品| 99视频精品在线| 久久精品.com| 欧美三级情趣内衣| 成人黄色午夜影院| 污污视频在线| 日韩h在线观看| 青青国产在线视频| 国产精品国产三级国产a | 不卡av免费在线观看| 五十路熟女丰满大屁股| 亚洲欧洲美洲国产香蕉| 日韩女优在线播放| 欧美三级黄网| 精品人在线二区三区| 日本一级一片免费视频| 久久麻豆一区二区| 手机av在线网| 激情婷婷亚洲| 日韩免费av一区二区三区| 九九久久国产| 欧美高清一级大片| 欧美一区二区少妇| 在线成人av影院| 久久久久久久久久久久久久免费看| 成人动漫一区二区| 久草福利视频在线| 一区二区影院| 久久国产精品久久| 亚洲爽爆av| 97视频在线观看亚洲| 成人在线观看一区| 精品欧美久久久| 69av视频在线观看| 亚洲午夜一区二区三区| 91免费在线看片| 成人av在线电影| 午夜剧场在线免费观看| 最新亚洲激情| 日本丰满少妇黄大片在线观看| 久久夜色精品国产噜噜av小说| 国产精品美女无圣光视频| 国产天堂在线播放视频| 综合激情国产一区| 四虎精品成人影院观看地址| 这里只有精品视频在线观看| 久久久久99精品成人片我成大片| ㊣最新国产の精品bt伙计久久| 无套内谢大学处破女www小说| 精品一区精品二区高清| 日本精品一区二区三区四区| 在线中文字幕亚洲| 亚洲国产精品视频一区| 天天躁日日躁成人字幕aⅴ| 91久久国产精品| 国产一区二区三区影视| 69av在线视频| 狂野欧美性猛交xxxxx视频| 日韩中文字幕欧美| 国产主播福利在线| 亚洲精品av在线播放| www.色亚洲| 9191精品国产综合久久久久久| 日韩欧美在线观看免费| 亚洲国产va精品久久久不卡综合| 卡通动漫亚洲综合| 国产精品无人区| 日本高清www| 99热这里都是精品| 香蕉视频污视频| 国产传媒一区在线| 亚洲精品mv在线观看| 免费在线成人网| 久久精品99国产| 国产精品老牛| 青青青国产在线观看| 激情亚洲成人| 黄色一级视频在线播放| 欧美日韩精选| 人妻激情另类乱人伦人妻| 中文字幕免费精品| 992tv成人免费观看| 亚洲91视频| 精品少妇人妻av一区二区| 色综合五月天| 先锋影音男人资源| 欧美 日韩 国产精品免费观看| 激情图片qvod| 国产精品porn| 999在线观看视频| 一本不卡影院| 免费在线观看的毛片| 狂野欧美一区| 少妇网站在线观看| 久久国产精品99久久久久久老狼| 污污的网站免费| 国产一区二区三区四| 欧美xxxx日本和非洲| 成人黄色国产精品网站大全在线免费观看| 四虎永久免费观看| 99久久精品国产观看| 丝袜美腿中文字幕| 国产日韩欧美精品电影三级在线 | 欧美日韩性在线观看| 深夜福利成人| 亚洲成人最新网站| 天堂8在线天堂资源bt| 99视频精品| 最近免费中文字幕中文高清百度| 日韩av午夜在线观看| 亚洲精品永久视频| 东方aⅴ免费观看久久av| 亚洲欧美在线不卡| 欧美激情一区二区在线| 粉嫩av性色av蜜臀av网站| 亚洲一二三四区不卡| 精品黑人一区二区三区| 欧美精品久久99久久在免费线| 精品久久久无码中文字幕| 日韩精品欧美国产精品忘忧草| www.亚洲免费| 欧美激情按摩在线| 自拍偷自拍亚洲精品被多人伦好爽| 91久久精品国产91久久| 红杏aⅴ成人免费视频| 午夜欧美性电影| 激情久久中文字幕| 欧美一级特黄a| 东方欧美亚洲色图在线| 91精品久久久久久久久久久久| 亚洲男人的天堂av| 欧美a视频在线观看| 欧美一二三在线| 国产区在线视频| 欧美精品18videos性欧| 欧美123区| 精品国产乱码久久久久久丨区2区| 波多野结衣一区| 国产特级淫片高清视频| 国产一区二区网址| 91网站免费视频| 亚洲国产精品一区二区www在线| 久久精品偷拍视频| 欧美精品一区二区三区四区| 天堂中文8资源在线8| 国产69精品久久久久久| 欧美9999| 亚洲成人自拍| 性8sex亚洲区入口| 成人欧美精品一区二区| 国产精品网站在线观看| 三级黄色在线视频| 精品免费一区二区三区| 麻豆传媒视频在线观看免费| 日韩**中文字幕毛片| 欧美激情网址| 国产手机免费视频| 国产伦精一区二区三区| 妖精视频在线观看免费| 色婷婷av久久久久久久| 午夜国产在线观看| 国产69精品99久久久久久宅男| 久久免费精品| a级网站在线观看| 久久99在线观看| 91视频免费看片| 91黄视频在线| 嫩草在线播放| 日本一欧美一欧美一亚洲视频| 久久香蕉精品香蕉| 国产精品一色哟哟| 丁香六月久久综合狠狠色| 国产女人被狂躁到高潮小说| 91.com在线观看| 免费网站看v片在线a| 国产精自产拍久久久久久蜜| 欧美美女视频| 污视频网站观看| 国产精品免费av| 亚洲图片小说视频| 最近2019免费中文字幕视频三 | 久久这里有精品15一区二区三区| 色婷婷免费视频| 欧美日韩国产一区中文午夜| 日本国产在线观看| 26uuu日韩精品一区二区| 啪啪国产精品| 国产精品第12页| 国产亚洲女人久久久久毛片| 亚洲大片免费观看| 在线成人中文字幕| 日韩毛片免费视频一级特黄| 一区二区在线观| 国产一区二区三区蝌蚪| 加勒比av在线播放| 亚洲精品国精品久久99热一| 日本在线播放一二三区| 欧美一区二区综合| 日本aⅴ亚洲精品中文乱码| 老司机深夜福利网站| 91精品国产综合久久国产大片| 欧美人体视频xxxxx| 九九九九久久久久| 日韩高清欧美激情| www.毛片com| 亚洲精品国产综合久久| av在线日韩| 欧美xxxx吸乳| av不卡免费电影| 中文在线观看av| 久久福利视频导航| 精品久久对白| 一区二区三区入口| 一区二区视频在线| 你懂的视频在线免费| 91精品中国老女人| 亚洲另类黄色| 少妇视频在线播放| 欧美mv日韩mv亚洲| 国产综合色区在线观看| 水蜜桃在线免费观看| 91在线丨porny丨国产| 在线免费观看高清视频| 久久久久国产一区二区三区| 免费黄色成人| 可以看的av网址| 在线观看成人免费视频| 午夜激情在线| 欧美日韩国产不卡在线看| 国产在线不卡视频| 久草视频一区二区| 萌白酱国产一区二区| 久久91麻豆精品一区| 午夜激情视频网| 色婷婷综合久久久中文字幕| 色图在线观看| 亚洲精品自在在线观看| av一区二区三区四区| 国产精品久久久久毛片| 欧美一级黄色网|