diff --git a/15476981952811.html b/15476981952811.html index c262f83..d94cf22 100644 --- a/15476981952811.html +++ b/15476981952811.html @@ -170,18 +170,24 @@

Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -218,31 +224,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15481372107974.html b/15481372107974.html index 4c76d23..de98527 100644 --- a/15481372107974.html +++ b/15481372107974.html @@ -229,18 +229,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -277,31 +283,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15481408753253.html b/15481408753253.html index ea65a8f..3ecb7fc 100644 --- a/15481408753253.html +++ b/15481408753253.html @@ -191,18 +191,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -239,31 +245,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15482336668160.html b/15482336668160.html index 6a444da..c189d28 100644 --- a/15482336668160.html +++ b/15482336668160.html @@ -373,18 +373,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -421,31 +427,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15483468139816.html b/15483468139816.html index e772c02..4d6a715 100644 --- a/15483468139816.html +++ b/15483468139816.html @@ -257,18 +257,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -305,31 +311,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15488420447689.html b/15488420447689.html index 423ea5f..e3db1d0 100644 --- a/15488420447689.html +++ b/15488420447689.html @@ -148,18 +148,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -196,31 +202,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15488420618155.html b/15488420618155.html index 6951ea3..e264389 100644 --- a/15488420618155.html +++ b/15488420618155.html @@ -167,18 +167,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -215,31 +221,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15490763418639.html b/15490763418639.html index 1f3885b..d79205d 100644 --- a/15490763418639.html +++ b/15490763418639.html @@ -213,18 +213,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -261,31 +267,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15510618792149.html b/15510618792149.html index 8d1e8e4..a5187a0 100644 --- a/15510618792149.html +++ b/15510618792149.html @@ -339,18 +339,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -387,31 +393,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15511647865786.html b/15511647865786.html index 6ebf74b..341e164 100644 --- a/15511647865786.html +++ b/15511647865786.html @@ -165,18 +165,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -213,31 +219,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15512397780424.html b/15512397780424.html index 194fa41..f9b6aba 100644 --- a/15512397780424.html +++ b/15512397780424.html @@ -190,18 +190,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -238,31 +244,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15514283796439.html b/15514283796439.html index a3367d1..f5b02ea 100644 --- a/15514283796439.html +++ b/15514283796439.html @@ -187,18 +187,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -235,31 +241,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15519281018034.html b/15519281018034.html index 72f2f14..1153397 100644 --- a/15519281018034.html +++ b/15519281018034.html @@ -197,18 +197,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -245,31 +251,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15524706279073.html b/15524706279073.html index b4c6584..5e7f8b1 100644 --- a/15524706279073.html +++ b/15524706279073.html @@ -178,18 +178,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -226,31 +232,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15529898481691.html b/15529898481691.html index ef283c0..86876ae 100644 --- a/15529898481691.html +++ b/15529898481691.html @@ -215,18 +215,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -263,31 +269,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15529928360156.html b/15529928360156.html index 6f965c7..68f7b42 100644 --- a/15529928360156.html +++ b/15529928360156.html @@ -152,18 +152,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -200,31 +206,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15540894210258.html b/15540894210258.html index e47e57e..108e2a6 100644 --- a/15540894210258.html +++ b/15540894210258.html @@ -270,18 +270,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -318,31 +324,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15543440484929.html b/15543440484929.html index 8dd4326..0dc591f 100644 --- a/15543440484929.html +++ b/15543440484929.html @@ -165,18 +165,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -213,31 +219,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15548815336055.html b/15548815336055.html index 4f8c091..611658c 100644 --- a/15548815336055.html +++ b/15548815336055.html @@ -189,18 +189,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -237,31 +243,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15553150635573.html b/15553150635573.html index 01ff37b..23062ce 100644 --- a/15553150635573.html +++ b/15553150635573.html @@ -166,18 +166,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -214,31 +220,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15554074466566.html b/15554074466566.html index 008cbdf..f3c2217 100644 --- a/15554074466566.html +++ b/15554074466566.html @@ -157,18 +157,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -205,31 +211,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15560194068510.html b/15560194068510.html index c777188..6dd0a3c 100644 --- a/15560194068510.html +++ b/15560194068510.html @@ -336,18 +336,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -384,31 +390,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15560743380263.html b/15560743380263.html index 0e3fb44..3a9d397 100644 --- a/15560743380263.html +++ b/15560743380263.html @@ -151,18 +151,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -199,31 +205,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15572845291359.html b/15572845291359.html index 13dd7e9..293cbba 100644 --- a/15572845291359.html +++ b/15572845291359.html @@ -228,18 +228,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -276,31 +282,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15575570747233.html b/15575570747233.html index 13eb811..2bc55ae 100644 --- a/15575570747233.html +++ b/15575570747233.html @@ -205,18 +205,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -253,31 +259,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15580141033211.html b/15580141033211.html index e5187e5..c45a4c5 100644 --- a/15580141033211.html +++ b/15580141033211.html @@ -235,6 +235,9 @@

    界面

    + « mac上kafak的安装 + » @@ -268,18 +271,24 @@

    Categories

  • - 中间件 (1) + 中间件 (6)

    + 消息队列 (4)   + + 数据清洗 (1)   + 监控报警 (1)  

  • - 语言 (8) + 语言 (9)

    + lua (1)   + php (4)   golang (4)   @@ -316,31 +325,31 @@

    Recent Posts

  • - 常见的项目管理工具推荐 + 大数据架构
  • - + 对lua携程做超时时间
  • - Go mod 使用教程 +
  • - 深度思维笔记 + nsq简介
  • - resful 最佳实践 + mac 安装nsq
  • diff --git a/15585180475485.html b/15585180475485.html new file mode 100644 index 0000000..8a35dcc --- /dev/null +++ b/15585180475485.html @@ -0,0 +1,331 @@ + + + + + + + + + + mac上kafak的安装 - 搁羽念风 + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    搁羽念风

    + +

    + +
    + +
    + +
    +
    +
    +
    +
    +

    mac上kafak的安装

    +

    +
    +
    +

    使用docker-compose快速启用kafka

    + +
    +

    创建 docker-compose.yml文件并写入以下内容

    +
    + +
    version: '3'
    +services:
    +  zookeeper:
    +    image: wurstmeister/zookeeper
    +    ports:
    +      - "2181:2181"
    +  kafka:
    +    image: wurstmeister/kafka
    +    depends_on: [ zookeeper ]
    +    ports:
    +      - "9092:9092"
    +    environment:
    +      KAFKA_ADVERTISED_HOST_NAME: 192.168.1.40
    +      KAFKA_CREATE_TOPICS: "test:1:1"
    +      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    +    volumes:
    +      - ./docker.sock:/var/run/docker.sock
    +
    + +

    安装php-rdkafka扩展

    + +
    brew install librdkafka
    +sudo pecl install rdkafka
    +
    +php -m | grep kafka // 如果有内容,说明安装成功
    +
    + +

    快速使用小demo

    + +
    +

    生产者

    +
    + +
    
    +
    + +
    +

    消费者

    +
    + +
    
    +
    + +
    + + + + +
    +
    +
    + + + + + + + + + + \ No newline at end of file diff --git a/15585794233066.html b/15585794233066.html new file mode 100644 index 0000000..54ed722 --- /dev/null +++ b/15585794233066.html @@ -0,0 +1,341 @@ + + + + + + + + + + mac 安装nsq - 搁羽念风 + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    搁羽念风

    + +

    + +
    + +
    + +
    +
    +
    +
    +
    +

    mac 安装nsq

    +

    +
    +
    +

    使用docker-compose

    + +
    +

    创建docker-compose.yml文件,并写入以下内容

    +
    + +
    version: '3'
    +
    +services:
    +  nsqlookupd:
    +    image: nsqio/nsq
    +    networks:
    +      - nsq-network
    +    hostname: nsqlookupd
    +    ports:
    +      - "4161:4161"
    +      - "4160:4160"
    +    command: /nsqlookupd
    +  nsqd:
    +    image: nsqio/nsq
    +    depends_on:
    +      - nsqlookupd
    +    hostname: nsqd
    +    volumes:
    +      - ./data:/data
    +    networks:
    +      - nsq-network
    +    ports:
    +      - "4151:4151"
    +      - "4150:4150"
    +    command: /nsqd --broadcast-address=nsqd --lookupd-tcp-address=nsqlookupd:4160 --data-path=/data
    +  nsqadmin:
    +    image: nsqio/nsq
    +    depends_on:
    +      - nsqlookupd
    +    hostname: nsqadmin
    +    ports:
    +      - "4171:4171"
    +    networks:
    +      - nsq-network
    +    command: /nsqadmin --lookupd-http-address=nsqlookupd:4161
    +
    +networks:
    +  nsq-network:
    +    driver: bridge
    +
    + +

    下载php-nsq扩展并编译安装

    + +
    git clone https://github.com/yunnian/php-nsq.git
    +cd ./php-nsq
    +sudo phpize
    +./configure
    + make && make install
    + make test
    + cd /usr/local/etc/php/.../
    + // 在php.ini 中添加 extension="nsq.so"
    +
    + +
    + + + + +
    +
    +
    + + + + + + + + + + \ No newline at end of file diff --git a/15586818694083.html b/15586818694083.html new file mode 100644 index 0000000..1416db4 --- /dev/null +++ b/15586818694083.html @@ -0,0 +1,333 @@ + + + + + + + + + + nsq简介 - 搁羽念风 + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    搁羽念风

    + +

    + +
    + +
    + +
    +
    +
    +
    +
    +

    nsq简介

    +

    +
    +
    +

    基本架构

    + +
    +

    整体架构图如下
    +

    +
    + +

    nsqd

    + +
    +

    负责接收消息,存储队列,将消息发送给客户端
    +这个服务提供了 创建topic功能,并能生成一组 channel交互数据
    +具体过程如下
    +一条消息发送至topic,将会发送到该topic下所有的channel, 发送给某个消费者进行消费

    +
    + +

    + +

    topic

    + +
    +

    也就是对消息的分区,不同的频道

    +
    + +

    channel

    + +
    +

    消息队列

    +
    + +

    nsqlookup

    + +
    +

    一组类似zookeeper的功能
    +负责服务发现,nsqd当当心跳,状态监测,给客户端,nsqadmin提供nsqd的地址和状态

    +
    + +

    nsqadmin

    + +
    +

    一个webui用于查看nsq消息队列的基本信息

    +
    + +

    部署并启动

    + +
    +

    这里我们使用docker-compose 部署一个nsq集群, 架构如下

    +
    + +

    单个 nsqd 可以有多个 Topic,每个 Topic 又可以有多个 Channel。Channel 能够接收 Topic 所有消息的副本,从而实现了消息多播分发;而 Channel 上的每个消息被分发给它的订阅者,从而实现负载均衡,所有这些就组成了一个可以表示各种简单和复杂拓扑结构的强大框架。

    + +
    + + + + +
    +
    +
    + + + + + + + + + + \ No newline at end of file diff --git a/15586915348117.html b/15586915348117.html new file mode 100644 index 0000000..0df2881 --- /dev/null +++ b/15586915348117.html @@ -0,0 +1,283 @@ + + + + + + + + + + - 搁羽念风 + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    搁羽念风

    + +

    + +
    + +
    + +
    +
    +
    + +
    +
    + + + + + + + + + + \ No newline at end of file diff --git a/15586915631306.html b/15586915631306.html new file mode 100644 index 0000000..e0e3033 --- /dev/null +++ b/15586915631306.html @@ -0,0 +1,288 @@ + + + + + + + + + + 对lua携程做超时时间 - 搁羽念风 + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    搁羽念风

    + +

    + +
    + +
    + +
    +
    +
    +
    +
    +

    对lua携程做超时时间

    +

    +
    +
    +
    +

    原理就是设置一个 定时携程,收到任意携程后,关闭整个所有携程,读取任务结果

    +
    + +

    + +
    + + + + +
    +
    +
    + + + + + + + + + + \ No newline at end of file diff --git a/15589244025963.html b/15589244025963.html new file mode 100644 index 0000000..f90d85e --- /dev/null +++ b/15589244025963.html @@ -0,0 +1,281 @@ + + + + + + + + + + 大数据架构 - 搁羽念风 + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    搁羽念风

    + +

    + +
    + +
    + +
    +
    +
    + +
    +
    + + + + + + + + + + \ No newline at end of file diff --git a/all.html b/all.html index 2d58859..739c6d4 100644 --- a/all.html +++ b/all.html @@ -80,6 +80,264 @@

    + + +
    +
    +

    对lua携程做超时时间

    +

    +
    +
    + +
    +

    原理就是设置一个 定时携程,收到任意携程后,关闭整个所有携程,读取任务结果

    +
    + +

    + + +
    + + + +
    + +
    +
    +

    +

    +
    +
    + + + +
    + + + +
    + +
    +
    +

    nsq简介

    +

    +
    +
    + +

    基本架构

    + +
    +

    整体架构图如下
    +

    +
    + +

    nsqd

    + +
    +

    负责接收消息,存储队列,将消息发送给客户端
    +这个服务提供了 创建topic功能,并能生成一组 channel交互数据
    +具体过程如下
    +一条消息发送至topic,将会发送到该topic下所有的channel, 发送给某个消费者进行消费

    +
    + +

    + +

    topic

    + +
    +

    也就是对消息的分区,不同的频道

    +
    + +

    channel

    + +
    +

    消息队列

    +
    + +

    nsqlookup

    + +
    +

    一组类似zookeeper的功能
    +负责服务发现,nsqd当当心跳,状态监测,给客户端,nsqadmin提供nsqd的地址和状态

    +
    + +

    nsqadmin

    + +
    +

    一个webui用于查看nsq消息队列的基本信息

    +
    + +

    部署并启动

    + +
    +

    这里我们使用docker-compose 部署一个nsq集群, 架构如下

    +
    + +

    单个 nsqd 可以有多个 Topic,每个 Topic 又可以有多个 Channel。Channel 能够接收 Topic 所有消息的副本,从而实现了消息多播分发;而 Channel 上的每个消息被分发给它的订阅者,从而实现负载均衡,所有这些就组成了一个可以表示各种简单和复杂拓扑结构的强大框架。

    + + +
    + + + +
    + +
    +
    +

    mac 安装nsq

    +

    +
    +
    + +

    使用docker-compose

    + +
    +

    创建docker-compose.yml文件,并写入以下内容

    +
    + +
    version: '3'
    +
    +services:
    +  nsqlookupd:
    +    image: nsqio/nsq
    +    networks:
    +      - nsq-network
    +    hostname: nsqlookupd
    +    ports:
    +      - "4161:4161"
    +      - "4160:4160"
    +    command: /nsqlookupd
    +  nsqd:
    +    image: nsqio/nsq
    +    depends_on:
    +      - nsqlookupd
    +    hostname: nsqd
    +    volumes:
    +      - ./data:/data
    +    networks:
    +      - nsq-network
    +    ports:
    +      - "4151:4151"
    +      - "4150:4150"
    +    command: /nsqd --broadcast-address=nsqd --lookupd-tcp-address=nsqlookupd:4160 --data-path=/data
    +  nsqadmin:
    +    image: nsqio/nsq
    +    depends_on:
    +      - nsqlookupd
    +    hostname: nsqadmin
    +    ports:
    +      - "4171:4171"
    +    networks:
    +      - nsq-network
    +    command: /nsqadmin --lookupd-http-address=nsqlookupd:4161
    +
    +networks:
    +  nsq-network:
    +    driver: bridge
    +
    + +

    下载php-nsq扩展并编译安装

    + +
    git clone https://github.com/yunnian/php-nsq.git
    +cd ./php-nsq
    +sudo phpize
    +./configure
    + make && make install
    + make test
    + cd /usr/local/etc/php/.../
    + // 在php.ini 中添加 extension="nsq.so"
    +
    + + +
    + + + +
    + +
    +
    +

    mac上kafak的安装

    +

    +
    +
    + +

    使用docker-compose快速启用kafka

    + +
    +

    创建 docker-compose.yml文件并写入以下内容

    +
    + +
    version: '3'
    +services:
    +  zookeeper:
    +    image: wurstmeister/zookeeper
    +    ports:
    +      - "2181:2181"
    +  kafka:
    +    image: wurstmeister/kafka
    +    depends_on: [ zookeeper ]
    +    ports:
    +      - "9092:9092"
    +    environment:
    +      KAFKA_ADVERTISED_HOST_NAME: 192.168.1.40
    +      KAFKA_CREATE_TOPICS: "test:1:1"
    +      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    +    volumes:
    +      - ./docker.sock:/var/run/docker.sock
    +
    + +

    安装php-rdkafka扩展

    + +
    brew install librdkafka
    +sudo pecl install rdkafka
    +
    +php -m | grep kafka // 如果有内容,说明安装成功
    +
    + +

    快速使用小demo

    + +
    +

    生产者

    +
    + +
    
    +
    + +
    +

    消费者

    +
    + +
    
    +
    + + +
    + + + +
    +

    常见的项目管理工具推荐

    @@ -399,485 +657,6 @@

    深度思维笔记

    - -
    -
    -

    resful 最佳实践

    -

    -
    -
    - -

    url设计

    - -
      -
    1. 推荐使用复数名词 /employees/21
    2. -
    3. 在资源集合URL 上使用GET方法,更加直观 GET /employees?state=external
    4. -
    5. 对特定资源进行过滤, 将搜索字符串附加到查询参数中即可 GET /employees?state=internal
    6. -
    - -

    使用http方法操作资源(CURD)

    - -
    -

    这种方式可以用简洁的方式获取7种操作资源的方式
    -如果一个请求是 indempotent(即发送两个一样的请求,后一个会覆盖前一个),此时使用PUT方法,否则使用POST方法

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Post(创建)GET(读取)PUT(更新)DELETE(删除)
    /employees创建列出批量更新删除所有
    /employees/56X获取56号员工的信息更新56号员工的信息删除56号员工的信息
    - -

    非资源请求用动词

    - -
    -

    使用动词来区分资源和非资源,url中使用动词而非名词 GET /translate?from=de_DE&to=en_US&text=Hallo
    -增加资源动作控制参数 PUT /articles/id?published=true
    -把动作转换为一个可以操作的资源 例如github,"喜欢"一个gist,转换为增加一个/gists/id/star子资源,对其操作 PUT /gists/id/star,DELETE /gists/:id/star

    -
    - -

    使用标准 http 响应码

    - -

    请求成功:

    - -
      -
    • 200 OK: 请求已成功,Body有返回内容, 用于 GET Method 的API 返回码
    • -
    • 201 Created: 请求已经被实现,资源被创建. 用于 POST Method的同步类型API返回码
    • -
    • 202 Accepted: 服务器已经接受请求,但尚未处理. 用于 POST Method的异步类型API返回码
    • -
    • 204 No Content: 服务器成功处理了请求,但没有返回任何内容, 用于 DELETE/PUT Method 的API的返回码
    • -
    - -

    因为客户端原因导致请求失败:

    - -
      -
    • 400 Bad Request: 如参数错误,格式错误
    • -
    • 401 Unauthorized: 用户未被认证, 如果密码错误,证书错误
    • -
    • 403 Forbidden: 用户权限不够
    • -
    • 404 Not Found: 服务器无此资源, 通常为URL不存在,或者某个Method不存在
    • -
    • 409 Conflict: 请求存在冲突,无法处理该请求 (比如某个资源禁止被再次修改,但请求想修改该资源,就要返回409)
    • -
    - -

    因服务端原因导致请求失败:

    - -
      -
    • 500 Internal Server Error: 服务端错误消息,服务器遇到一个未曾预料的状况
    • -
    • 501 Not Implemented: 服务器不支持当前请求所需要的某个功能
    • -
    • 503 Service Unavailable: 如服务器维护中或者过载等
    • -
    - -

    返回有用的提示信息

    - -

    除了合适的状态码之外,还应当在正文中提供有用的错误提示和详细的描述

    - -
       // 400 Bad Request
    -   {
    -    "message": "You submitted an invalid state. Valid state values are 'internal' or 'external'",
    -    "errorCode": 352,
    -    "additionalInformation" :"http://www.domain.com/rest/errorcode/352"
    -   }
    -
    - -

    响应中提供浏览其他API的链接

    - -
    -

    如,在响应参数中添加一个 links 字段,让客户端可以自动变更,也可以自我描述,需要提供的文档更少

    -
    - -
    {
    -  "id":1,
    -  "name":"Paul",
    -  "links": [
    -     {
    -        "rel": "salary",
    -        "href": "/employees/1/salaryStatements"
    -     }
    -  ]
    -}
    -
    - -

    提供分页信息

    - -
    -

    资源较多时,可以用 page,page_size 来提供分页 /employees?page=30&page_size=15 #返回 30 到 45 的员工
    -还可以添加上一页和下一页的链接示例

    -
    - -
       GET /employees?offset=20&limit=10
    -   {
    -   "offset": 20,
    -   "limit": 10,
    -   "total": 3465,
    -   "employees": [
    -    //...
    -   ],
    -   "links": [
    -     {
    -        "rel": "nextPage",
    -        "href": "/employees?offset=30&limit=10"
    -     },
    -     {
    -        "rel": "previousPage",
    -        "href": "/employees?offset=10&limit=10"
    -     }
    -   ]
    -   }
    -
    - -

    使用https

    - -
    -

    禁止非ssl的url重定向到ssl的url

    -
    - -

    授权

    - -
      -
    • 验证(Authentication) 为了确定用户申明的身份
    • -
    • 授权(Authorization) 为用户增加某个资源的操作权限
    • -
    - -

    Location

    - -

    在响应的header中使用,一般为客户端感兴趣的资源url,如果成功创建一个资源后,把新资源url放在Location中
    -异步创建请求,也可以在响应 202的同时,添加一个可以异步状态查询的地址

    - -

    API地址

    - -

    在url中指定API的版本号 https://api.github.com/v3
    -如果api变化很大,可以把api设计为子域名 https://v3.api.demo.com
    -不需要次级版本,只有当接口不兼容,才应该变更版本号

    - -

    两种实现方式

    - -
      -
    • url中 如https://example.com/api/v1, -
        -
      • 版本明确,方便调试
      • -
      • 不同版本协议解析可以放在不同的服务器上
      • -
      • 不用考虑协议兼容性,开发简便,升级不受影响
      • -
    • -
    • HTTP Header 中 -
        -
      • url简洁干净,符合RESTful惯例
      • -
    • -
    - -

    连字符

    - -

    url 中应该尽量使用 "-" 来代替下划线"_"的使用,如
    -http://api.example.restapi.org/blogs/mark-masse/entries/this-is-my-first-post

    - -

    大小写

    - -

    根据 RFC3986 定义,URI 是对大小写敏感的,所以为了避免歧义,我们尽量用小写字符

    - - -
    - - - -
    - -
    -
    -

    git 一些常用的命令

    -

    -
    -
    - -

    删除错误的提交

    - -
    // 重置改动到 某次提交
    -git reset commit_id
    -// 强制push, 远程的commit_id 之后的push将会被删掉
    -git push --force
    -
    - - -
    - - - -
    - -
    -
    -

    给clickhouse 物化视图增加字段

    -

    -
    -
    - -
    -- 先查找一下sql路径
    -SELECT metadata_path FROM system.tables WHERE name = 'demo';
    -
    --- 摘除掉视图
    -DETACH table mid.play_block_status
    -
    --- 为 .inner.demo 表增加字段
    -alter table mid.`.inner.demo` add column ip String;
    -alter table mid.`.inner.demo` add column operator String;
    -
    --- 为 物化视图增加字段
    -根据第一步 查到的 metadata_path 路径, 为视图修改表结构
    -
    --- 重新加载视图
    -ATTACH table mid.play_block_status
    -
    - - -
    - - - -
    - -
    -
    -

    php相关函数

    -

    -
    -
    - -

    umask() 函数,改变umask值,使进程权限保持一致

    - -
    编写linux守护进程的时候,需要设置umask 这个值,用户权限屏蔽位, 
    -当用户创建目录或者文件的时候,会有一个预设的权限 r=4,w=2,x=1
    -目录的预设权限是:0777 drwxrwxrwx
    -文件的预设权限为: 0666 -rw-rw-rw-
    -
    -用这个权限减去 umask的权限,就是新建的目录或者文件的实际权限了
    -umask 默认值为  0022
    -新建文件夹权限为  0777 - 0022 = 0755
    -新建文件权限为   0666 - 0022 = 0644
    -
    - -

    pcntl_fork() 函数,在进程的当前位置产生分支(子进程)

    - -

    在当前进程的当前位置 产生分支(子进程), 都从fork位置继续执行,
    -成功时
    - 父进程执行过程中得到的fork返回值为子进程号,子进程得到的是0
    -失败时
    - 父进程将会返回 -1,不会创建子进程,并引发一个php错误

    - -

    posix_setsid() 新建一个session终端,脱离原有终端的控制

    - -

    成功时
    - 返回 session_id
    -失败时
    - 返回 -1

    - -

    php_sapi_name() 判断运行时环境

    - -

    extension_loaded() 检查一个扩展是否已经加载

    - -

    cli_set_process_title()

    - -

    为进程设定title
    -成功时
    - 返回 true
    -失败时
    - 返回 false

    - - -
    - - - -
    - -
    -
    -

    查看表占用磁盘空间大小

    -

    -
    -
    - -
    SELECT table, formatReadableSize(size) as size, rows, days, formatReadableSize(avgDaySize) as avgDaySize FROM (
    -    SELECT
    -        table,
    -        sum(bytes) AS size,
    -        sum(rows) AS rows,
    -        min(min_date) AS min_date,
    -        max(max_date) AS max_date,
    -        (max_date - min_date) AS days,
    -        size / (max_date - min_date) AS avgDaySize
    -    FROM system.parts
    -    WHERE active
    -    GROUP BY table
    -    ORDER BY rows DESC
    -)
    -
    - - -
    - - - -
    - -
    -
    -

    php 生成uuid的统一类

    -

    -
    -
    - -
    <?php
    -class UUID {
    -  public static function v3($namespace, $name) {
    -    if(!self::is_valid($namespace)) return false;
    -
    -    // Get hexadecimal components of namespace
    -    $nhex = str_replace(array('-','{','}'), '', $namespace);
    -
    -    // Binary Value
    -    $nstr = '';
    -
    -    // Convert Namespace UUID to bits
    -    for($i = 0; $i < strlen($nhex); $i+=2) {
    -      $nstr .= chr(hexdec($nhex[$i].$nhex[$i+1]));
    -    }
    -
    -    // Calculate hash value
    -    $hash = md5($nstr . $name);
    -
    -    return sprintf('%08s-%04s-%04x-%04x-%12s',
    -
    -      // 32 bits for "time_low"
    -      substr($hash, 0, 8),
    -
    -      // 16 bits for "time_mid"
    -      substr($hash, 8, 4),
    -
    -      // 16 bits for "time_hi_and_version",
    -      // four most significant bits holds version number 3
    -      (hexdec(substr($hash, 12, 4)) & 0x0fff) | 0x3000,
    -
    -      // 16 bits, 8 bits for "clk_seq_hi_res",
    -      // 8 bits for "clk_seq_low",
    -      // two most significant bits holds zero and one for variant DCE1.1
    -      (hexdec(substr($hash, 16, 4)) & 0x3fff) | 0x8000,
    -
    -      // 48 bits for "node"
    -      substr($hash, 20, 12)
    -    );
    -  }
    -
    -  public static function v4() {
    -    return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
    -
    -      // 32 bits for "time_low"
    -      mt_rand(0, 0xffff), mt_rand(0, 0xffff),
    -
    -      // 16 bits for "time_mid"
    -      mt_rand(0, 0xffff),
    -
    -      // 16 bits for "time_hi_and_version",
    -      // four most significant bits holds version number 4
    -      mt_rand(0, 0x0fff) | 0x4000,
    -
    -      // 16 bits, 8 bits for "clk_seq_hi_res",
    -      // 8 bits for "clk_seq_low",
    -      // two most significant bits holds zero and one for variant DCE1.1
    -      mt_rand(0, 0x3fff) | 0x8000,
    -
    -      // 48 bits for "node"
    -      mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
    -    );
    -  }
    -
    -  public static function v5($namespace, $name) {
    -    if(!self::is_valid($namespace)) return false;
    -
    -    // Get hexadecimal components of namespace
    -    $nhex = str_replace(array('-','{','}'), '', $namespace);
    -
    -    // Binary Value
    -    $nstr = '';
    -
    -    // Convert Namespace UUID to bits
    -    for($i = 0; $i < strlen($nhex); $i+=2) {
    -      $nstr .= chr(hexdec($nhex[$i].$nhex[$i+1]));
    -    }
    -
    -    // Calculate hash value
    -    $hash = sha1($nstr . $name);
    -
    -    return sprintf('%08s-%04s-%04x-%04x-%12s',
    -
    -      // 32 bits for "time_low"
    -      substr($hash, 0, 8),
    -
    -      // 16 bits for "time_mid"
    -      substr($hash, 8, 4),
    -
    -      // 16 bits for "time_hi_and_version",
    -      // four most significant bits holds version number 5
    -      (hexdec(substr($hash, 12, 4)) & 0x0fff) | 0x5000,
    -
    -      // 16 bits, 8 bits for "clk_seq_hi_res",
    -      // 8 bits for "clk_seq_low",
    -      // two most significant bits holds zero and one for variant DCE1.1
    -      (hexdec(substr($hash, 16, 4)) & 0x3fff) | 0x8000,
    -
    -      // 48 bits for "node"
    -      substr($hash, 20, 12)
    -    );
    -  }
    -
    -  public static function is_valid($uuid) {
    -    return preg_match('/^\{?[0-9a-f]{8}\-?[0-9a-f]{4}\-?[0-9a-f]{4}\-?'.
    -                      '[0-9a-f]{4}\-?[0-9a-f]{12}\}?$/i', $uuid) === 1;
    -  }
    -}
    -
    -// Usage
    -// Named-based UUID.
    -
    -$v3uuid = UUID::v3('1546058f-5a25-4334-85ae-e68f2a44bbaf', 'SomeRandomString');
    -$v5uuid = UUID::v5('1546058f-5a25-4334-85ae-e68f2a44bbaf', 'SomeRandomString');
    -
    -// Pseudo-random UUID
    -
    -$v4uuid = UUID::v4();
    -?>
    -
    - - -
    - - -