skynet学习笔记03— 服务
01、API
newservice(name, ...):阻塞的形势启动一个名为 name 的新服务,待start函数执行完后会返回这个服务的地址。uniqueservice(name, ...):针对于当前节点,启动一个唯一服务(相当于单例),如果服务该服务已经启动,则返回已启动的服务地址。queryservice(true, name, ...):针对于所有节点,启动一个唯一服务。queryservice(name) :查询一个由uniqueservice 启动的唯一服务的地址,若该服务尚未启动则等待。queryservice(true,name):查询一个由uniqueservice 启动的唯一服务的地址,若该服务尚未启动则等待。
02、Demo1 服务与唯一服务
配置
project = "../project/02service/"thread = 8
cpath = "./cservice/?.so"
bootstrap = "snlua bootstrap"
start = "serviceTest"
harbor = 1
address = "127.0.0.1:2526"
master = "127.0.0.1:2013"
standalone = "0.0.0.0:2013" -- 主节点
lualoader = "./lualib/loader.lua"
luaservice = "./service/?.lua;"..project.."?.lua;"..project.."worker/?.lua;"
lua_path = "./lualib/?.lua;" .. "./lualib/?/init.lua;"
lua_cpath = "./luaclib/?.so"
代码
work1.lua
local skynet = require "skynet"local param1 = ""
local param2 = ""skynet.init(function ()skynet.error("[work1] init work param1",param1,"param2",param2)
end)local function initParams(p1, p2)skynet.error("[work1] initParams p1",p1,"p2",p2)param1 = p1param2 = p2
end-- 调用初始化函数,...是不定参数,会从skynet.newservice的第二个参数开始透传过来
initParams(...)local function doWork()while true doskynet.error("---------work----------------")skynet.sleep(200)end
endskynet.start(function ()skynet.error("worker start param1 = ",param1,"param2 = ",param2)-- doWork()
end)
serviceTest.lua
local skynet = require "skynet"local function test1()local h1 = skynet.newservice("work1","work001","10086")local h2 = skynet.newservice("work1","work002","1008611")local h3 = skynet.uniqueservice("work1","work003","1008612")local h33 = skynet.uniqueservice("work1","work004","1008613") -- 这里并没有调用initParams与init函数skynet.error("h1",h1,"h2",h2,"h3",h3,"h33",h33)
endskynet.start(function()skynet.error("[service main] start")skynet.error("-----------test service begin--------------")test1();skynet.error("-----------test service end--------------") skynet.error("[service main] end")skynet.exit()
end)
运行结果
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ ./skynet ./examples/02serviceconfig

03、Demo1唯一服务与全局唯一服务
配置
project = "../project/02service/"thread = 8
cpath = "./cservice/?.so"
bootstrap = "snlua bootstrap"
start = "serviceTest"
harbor = 2 -- 修改节点
address = "127.0.0.1:2527" -- 修改从节点端口
master = "127.0.0.1:2013"
lualoader = "./lualib/loader.lua"
luaservice = "./service/?.lua;"..project.."?.lua;"..project.."worker/?.lua;"
lua_path = "./lualib/?.lua;" .. "./lualib/?/init.lua;"
lua_cpath = "./luaclib/?.so"
代码
local function test2()local h1 = skynet.uniqueservice("work1","work001","10086")local h2 = skynet.uniqueservice("work1","work002","1008611")local h3 = skynet.uniqueservice("work1","work003","1008612")skynet.error("h1",h1,"h2",h2,"h3",h3)local h33 = skynet.queryservice("work1")skynet.queryservice("work1")
endskynet.start(function()skynet.error("[service main] start")skynet.error("-----------test service begin--------------")test2();skynet.error("-----------test service end--------------") skynet.error("[service main] end")skynet.exit()
end)
运行结果
主节点
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ ./skynet ./examples/02serviceconfig
[:01000009] -----------test service begin--------------
[:0100000a] LAUNCH snlua work1 work001 10086
[:0100000a] [work1] initParams p1 work001 p2 10086
[:0100000a] [work1] init work param1 work001 param2 10086
[:0100000a] worker start param1 = work001 param2 = 10086
[:0100000b] LAUNCH snlua work1 work003 1008612
[:0100000b] [work1] initParams p1 work003 p2 1008612
[:0100000b] [work1] init work param1 work003 param2 1008612
[:0100000b] worker start param1 = work003 param2 = 1008612
[:01000009] h1 16777226 h2 16777226 h3 16777227
[:01000009] h33 16777226 h333 16777227
[:01000009] -----------test service end--------------
从节点
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ ./skynet ./examples/02serviceconfig2
[:02000007] -----------test service begin--------------
[:02000008] LAUNCH snlua work1 work001 10086
[:02000008] [work1] initParams p1 work001 p2 10086
[:02000008] [work1] init work param1 work001 param2 10086
[:02000008] worker start param1 = work001 param2 = 10086
[:02000007] h1 33554440 h2 33554440 h3 16777227
[:02000007] h33 33554440 h333 16777227
[:02000007] -----------test service end--------------
04、相关代码
https://gitee.com/mhz-zzj/skynet-study

相关文章:
skynet学习笔记03— 服务
01、API newservice(name, ...): 阻塞的形势启动一个名为 name 的新服务,待start函数执行完后会返回这个服务的地址。uniqueservice(name, ...):针对于当前节点,启动一个唯一服务(相当于单例),…...
34 Feign最佳实践
2.4.2.抽取方式 将Feign的Client抽取为独立模块,并且把接口有关的POJO、默认的Feign配置都放到这个模块中,提供给所有消费者使用。 例如,将UserClient、User、Feign的默认配置都抽取到一个feign-api包中,所有微服务引用该依赖包…...
软文推广中如何搭建媒体矩阵
媒体矩阵简单理解就是在不同的媒体平台上,根据运营目标和需求,建立起全面系统的媒体布局,进行多平台同步运营。接下来媒介盒子就来和大家聊聊,企业在软文推广过程中为什么需要搭建媒体矩阵,又该如何搭建媒体矩阵。 一、…...
Unity地面交互效果——5、角色足迹的制作
大家好,我是阿赵。 之前几篇文章,已经介绍了地面交互的轨迹做法。包括了法线、曲面细分还有顶点偏移。Shader方面的内容已经说完了,不过之前都是用一个球来模拟轨迹,这次来介绍一下,怎样和角色动作结合,…...
Centos8安装出错问题
科普介绍: CentOS 8 是一个基于 Linux 的操作系统,是 Red Hat Enterprise Linux (RHEL)的免费和开源版本。它提供了稳定、安全和可靠的基础设施,适用于服务器和桌面环境。CentOS 8 是 CentOS 系列中最新的版本&#x…...
计算机网络技术
深入浅出计算机网络 微课视频_哔哩哔哩_bilibili 第一章概述 1.1 信息时代的计算机网络 1. 计算机网络各类应用 2. 计算机网络带来的负面问题 3. 我国互联网发展情况 1.2 因特网概述 1. 网络、互连网(互联网)与因特网的区别与关系 如图所示࿰…...
当电脑桌面黑屏,而你只有一个鼠标该怎么办(重启方法的平替)
作为一个打工人 电脑是不是黑屏简直是routine了 我们都知道重启能解决一切问题 但是!! 如果你只有一个鼠标 电脑因为种种原因没法重启 该怎么办呢? 别慌 下面的方法非常灵验 1.按住ctrlShiftEsc 调出任务管理器;此项为必须…...
Leetcode2833. 距离原点最远的点
Every day a Leetcode 题目来源:2833. 距离原点最远的点 解法1:贪心 要使得到达的距离原点最远的点,就看 left 和 right 谁大,将 left 和 right 作为矢量相加,再往同方向加上 underline。 答案即为 abs(left - rig…...
chrome 的vue3的开发者devtool不起作用
问题: 刚刚vue2升级到vue3,旧的devtool识别不了vue3数据。 原因: devtool版本过低。升级到最新。 解决: 去github下载vuetool项目代码: GitHub - vuejs/devtools: ⚙️ Browser devtools extension for debugging…...
Redis数据结构七之listpack和quicklist
本文首发于公众号:Hunter后端 原文链接:Redis数据结构七之listpack和quicklist 本篇笔记介绍 listpack 和 quicklist 两种结构 按照顺序,本来应该先介绍 quicklist 的结构,quicklist 在 7.0 之前的版本是由双向链表和压缩列表构成…...
单词规律问题
给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。 示例1: 输入: pattern “abba”, s “dog cat cat d…...
蓝桥杯每日一题2023.11.8
题目描述 题目分析 对于输入的abc我们可以以a为年也可以以c为年,将abc,cab,cba这三种情况进行判断合法性即可,注意需要排序去重,所以考虑使用set 此处为纯模拟的写法,但使用循环代码会更加简洁。 方法一: #include&…...
高级PHP应用程序漏洞审核技术【一】
高级PHP应用程序漏洞审核技术【一】 目录 高级PHP应用程序漏洞审核技术【一】 本文章向大家介绍高级PHP应用程序漏洞审核技术【一】,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参…...
适用于4D毫米波雷达的目标矩形框聚类
目录 一、前言 二、点云聚类分割 三、基于方位搜索L型拟合 四、评价准则之面积最小化 五、评价准则之贴合最大化 六、评价准则之方差最小化 一、前言 对于多线束雷达可以获取目标物体更全面的面貌,在道路中前向或角雷达可能无法获取目标车矩形框但可以扫到两边…...
[模版总结] - 树的基本算法1 - 遍历
树结构定义 一种非线性存储结构,具有存储“一对多”关系的数据元素集合 种类 General Tree TrieB/B 树二叉树 满/完满/完全二叉树 完美BT : 除了叶子结点外所有节点都有两个字节点,每一层都完满填充完全BT: 除最后一层以外其他每一层都完美…...
macOS Sonoma 14.2beta2(23C5041e)发布(附黑白苹果镜像地址)
系统介绍 黑果魏叔11 月 10 日消息,今日向 Mac 电脑用户推送了 macOS 14.2 开发者预览版 Beta 2 更新(内部版本号:23C5041e),本次更新距离上次发布隔了 14 天。 macOS Sonoma 14.2 添加了 Music 收藏夹播放列表&…...
Docker进阶——再次认识docker的概念 Docker的结构 Docker镜像结构 镜像的构建方式
前言 在微服务大量应用的互联网时代,经常能看到docker的身影。作为docker的爱好者(在服务器安装MySQL,Redis。。。我用的都是docker),我也会持续深入学习和认识docker。 本篇博客再次介绍docker的基本概念࿰…...
postgis函数学习
1.特定功能的SQL 转为完整的json,前端调用用json_build_object、jsonb_agg等函数,处理mass_test表 select json_build_object(type,FetureCollection,features,jsonb_agg(st_asgeojson(mt.*)::json)) from mass_test mt获取图形边界范围的坐标 select…...
【Gradle-12】分析so文件和依赖的关系
1、前言 在包大小的占比中,so文件的占比往往是最高的,动辄几兆的大小多一个都会把包大小的指标打爆。 而在各厂商要求对手机CPU ARM架构进行分包适配的情况下,你更需要知道哪些依赖是没有适配v7a/v8a的,这将影响你的APP在应用市场…...
vue项目pdf文件的预览
1.下载 您可以在以下网址下载pdfjsLib:https://github.com/mozilla/pdf.js pdfjsLib是一个开源项目,您可以在GitHub上找到其源代码和相关资源。 2.放置文件位置 3.进入 在index.html引入 <script src"<% BASE_URL %>static/pdfjs-dist/b…...
CAPL编程精要:Itoa与_atoi64的实战解析与避坑指南
1. CAPL数据转换函数的核心价值 在汽车电子测试领域,数据格式转换就像不同语言之间的翻译工作。当我们进行CAN总线通信测试时,经常需要在十进制调试数据、十六进制报文数据、二进制信号数据之间来回切换。这就好比工程师需要同时掌握英制单位和公制单位&…...
3步构建智能网络管控:OpenWrt访问控制插件实战指南
3步构建智能网络管控:OpenWrt访问控制插件实战指南 【免费下载链接】luci-access-control OpenWrt internet access scheduler 项目地址: https://gitcode.com/gh_mirrors/lu/luci-access-control 在现代家庭和企业网络中,设备管理已成为网络管理…...
告别卡顿!手把手教你将TUM RGBD的tgz包转成30Hz流畅bag文件(附Python脚本)
告别卡顿!手把手教你将TUM RGBD的tgz包转成30Hz流畅bag文件(附Python脚本) 如果你正在使用TUM RGBD数据集进行SLAM或三维重建开发,一定遇到过官方提供的bag文件卡顿问题。原始15Hz的帧率在实时性要求高的场景下表现不佳࿰…...
奇点大会技术白皮书提前泄露版:多模态导航SLAMv3架构图、延迟压测曲线与边缘算力分配黄金公式
第一章:2026奇点智能技术大会:多模态导航应用 2026奇点智能技术大会(https://ml-summit.org) 多模态导航正从实验室走向城市级基础设施,2026奇点智能技术大会首次将视觉、语音、空间语义与惯性传感四维信号在边缘端完成毫秒级对齐与联合推理…...
AsrTools终极指南:5分钟快速上手免费语音转文字工具
AsrTools终极指南:5分钟快速上手免费语音转文字工具 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate te…...
三月七小助手:崩坏星穹铁道智能自动化解决方案
三月七小助手:崩坏星穹铁道智能自动化解决方案 【免费下载链接】March7thAssistant 崩坏:星穹铁道全自动 三月七小助手 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 三月七小助手(March7thAssistant)是…...
淘宝商品上下架时间批量获取的5种高效方法解析
1. 淘宝助理:一键查询商品上下架时间 淘宝助理作为官方推出的卖家工具,在批量获取商品上下架时间方面有着天然优势。我刚开始做淘宝店铺时,最头疼的就是手动记录几百个商品的上下架时间,直到发现了这个神器。具体操作非常简单&…...
FEKO中地平面类型与计算参数的高级配置指南
1. FEKO地平面类型详解与选择策略 第一次用FEKO做电磁仿真时,我被地平面选项搞得一头雾水——明明都是模拟地面效应,为什么要有三种不同配置?后来在调试一个车载天线模型时,自由空间和Sommerfeld积分的结果差异竟然达到15dB&#…...
GLM-TTS音色管理实测:自定义保存与加载音色,打造专属语音库
GLM-TTS音色管理实测:自定义保存与加载音色,打造专属语音库 1. 引言:为什么需要音色管理功能 在语音合成应用中,我们经常需要反复使用某些特定的音色。传统TTS系统每次生成语音都需要重新上传参考音频,不仅效率低下&…...
在Ubuntu 22.04上为RTX 40系显卡编译MMCV 2.2.0:从CUDA 12.6配置到PEP517避坑全记录
在Ubuntu 22.04上为RTX 40系显卡编译MMCV 2.2.0:从CUDA 12.6配置到PEP517避坑全记录 最近在Ubuntu 22.04系统上为RTX 4090显卡配置MMCV 2.2.0开发环境时,遇到不少坑。特别是当PyTorch 2.6.0、CUDA 12.6和MMCV的版本需要精确匹配时,稍有不慎就…...
