- Hyperf的项目目录架构到底是怎样的?使用场景是什么?底层原理是什么?
Hyperf作为基于Swoole的高性能PHP框架,其设计理念和目录架构与传统Laravel/Lumen有相似之处,但也因应Swoole的特性做了优化。一、Hyperf项目目录架构典型的Hyperf项目结构如下:project/├──app/#应用核心代码│├──Controller/#HTTP控制器│├──Service/#业务逻辑层│├──Model/#数据模型│├──Command/#命令行
- 到底如何从零开始使用Hyperf 搭建微服务架构?具体步骤是怎样的?底层原理是什么?
一、Hyperf的底层原理Hyperf是一个基于Swoole的高性能PHP微服务框架,其核心特点包括:协程支持:基于Swoole提供的协程能力,Hyperf实现了非阻塞I/O和高并发处理。协程是轻量级线程,允许在单个进程中处理大量并发请求。依赖注入(DI):使用PSR-11标准的依赖注入容器,简化组件管理和服务解耦。AOP(面向切面编程):通过注解和AOP机制,可以在方法执行前后插入逻辑,例如日志
- easyswoole/Hyperf开发的php系统 cpu超负荷定位排查
WishYouAFortune
高并发phpphp开发语言cpu高并发swooleeasyswoolehyperf
EasySwooleEasySwoole是一个高性能的PHP协程框架,它利用了协程的特性来提高PHP应用的性能。当使用EasySwoole开发的PHP系统遇到CPU超负荷的问题时,可以从以下几个方面进行全方位排查和优化:1.监控系统资源使用top、htop、vmstat、iostat等工具监控CPU、内存、磁盘I/O和网络使用情况。特别关注loadaverage(平均负载),如果负载值接近或超过C
- Laravel是否足以支持高并发以及为何需要选择Hyperf或Gin
Json2011315
swoolegophpswoolephpginlaravel
讨论Laravel是否足以支持高并发以及为何需要选择Hyperf或Gin时,需从底层架构、性能瓶颈、适用场景等多个维度综合分析。以下是详细的对比和解释:一、Laravel的高并发局限性与优化手段原生性能瓶颈Laravel基于传统的PHP-FPM多进程模式,每次请求均需重新加载框架和依赖,导致资源重复初始化(如路由解析、服务容器构建),尤其在大量并发请求时,磁盘I/O和内存消耗显著增加,性能下降明显
- docker 内容器访问另一个容器中的服务
docker容器网络
docker中有两个容器,分别名为mq和hyperf,想在hyperf中访问mq可以使用下面的方法1.创建网络dockernetworkcreatemynetwork2.将使用到的容器(如业务容器,mysql,redis,mq等容器)都加入到网络中dockernetworkconnectmynetworkhyperfdockernetworkconnectmynetworkmqdockernetw
- hyperf-throttle-requests,一个超牛的 PHP 限流神器
php
在分布式系统和微服务架构中,API的稳定性和可用性至关重要。为了保护后端服务不受恶意攻击和流量高峰的影响,请求频率限制(RateLimiting)成为了一种常见的策略。Hyperf框架作为一款高性能的PHP框架,提供了丰富的组件来支持各种场景。今天,我们要介绍的是hyperf-throttle-requests库,一个专为Hyperf框架设计的请求频率限流器。hyperf-throttle-req
- hyperf-alarm-clock,一个自动计算代码执行时间,超时并发送通知的小工具
php
在软件开发中,我们经常需要对代码执行时间进行监控,以确保系统的性能和稳定性。在PHP的世界里,Hyperf框架以其高性能和丰富的组件生态而闻名,而今天我要介绍的是Hyperf生态中的一个小巧的插件包——hyperf-alarm-clock库。它是一个计算代码执行时间,并在超时后发送通知的小工具。本文将带你了解这个库的安装、特性、基本与高级功能,并结合实际应用场景,展示其在项目中的应用。hyperf
- hyperf学习笔记
Nathan__27
学习笔记
I/O操作全称input/output操作,即输入与输出操作,指的是计算机与外部设备之间进行的数据交换过程。这些操作可以是硬件层面的,如硬盘读写、网络通信;软件层面的,如文件读写、数据库操作。因此,相对于Cpu的计算操作要慢得多,往往是性能瓶颈之一。进程,线程,协程进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。上下文进程间的切换开销比较大
- PHP之hyperf学习笔记
19岁开始学习
php学习笔记hyperf
HyperfModel,Dao,Service,Contronller路由使用文件来配置路由,就是和laravel一样的Router::addGroup(["middleware"=>["web","auth"],"namespace"=>"Hyperf\HttpServer\Controller","prefix"=>"hyperf",],function(Router$router){Rout
- ubuntu Docker手记
cxscode
docker运维linux
实用:Ubuntu安装docker-腾讯云开发者社区-腾讯云使用docker安装hyperf(ubuntu)_太阳上的雨天的博客-CSDN博客_docker安装hyperf参考官方安装地址:InstallDockerEngineonUbuntu|DockerDocumentation使用docker安装hyperf(ubuntu)下载并运行hyperf/hyperf镜像,并将镜像内的项目目录绑定到
- hyperf 中间件
胡萝卜的兔
hyperf中间件hyperfswoole
中间件原理图中间件主要用于编织从请求(Request)到响应(Response)的整个流程,通过对多个中间件的组织,使数据的流动按我们预定的方式进行,中间件的本质是一个洋葱模型图中的顺序为按照Middleware1->Middleware2->Middleware3的顺序组织着,我们可以注意到当中间的横线穿过内核即Middleware3后,又回到了Middleware2,为一个嵌套模型,那么实际的
- [笔记] hyperf event
ELI_He999
phpspringjava后端
事件模型事件实现于psr/event-dispatcher接口。自定义监听器得益于hyperf/event组件的支撑,用户可以很方便的对以下事件进行监听。例如QueryExecuted,StatementPrepared,TransactionBeginning,TransactionCommitted,TransactionRolledBack。接下来我们就实现一个记录SQL的监听器,来说一下怎
- 重新编译 Swoole 并开启 Openssl
Ultra_efficient
最近使用Hyperf的时候,在使用CURL请求外部的https链接回报这样的错误:youmustconfigurewith--enable-openssltosupportsslconnectionwhen……它提示我必须配置--enable-openssl,虽然我知道这句话的文字意思,但是并不知道具体怎么操作才能进行配置,因为我并不知道他的具体执行步骤或使用流程。经过昨天的相关搜索和验证,弄清了
- hyperf php,hyperf:php swoole框架
cksh20190209
hyperfphp
PHP一定能让人想起这句话:PHP是世界上最好的语言!先贴出框架在github里的开源地址:hyperf开源地址:https://github.com/hyperf/hyperf了解一下Hyperf是什么?Hyperf是基于Swoole4.5实现的高性能、高灵活性的PHP协程框架,内置协程服务器及大量常用的组件,性能较传统基于PHP-FPM的框架有质的提升,提供超高性能的同时,也保持着极其灵活的可
- Laravel/Hyperf 把缓存的数据载入到model使用
小温LLT
PHPLaravel缓存PHPLaravelHyperf
项目很多数据从数据库中取出来放到缓存中,要缓存对象的话那就内存占用太高了.所以放到缓存的基本都是数组,然而取出来的时候是数组用起来就很不方便了.不能像模型一样使用.那有没有办法把已有的数据加载到模型中去使用呢然后在调用save方法的时候是更新而不是新增呢.我觉得框架源代码肯定有哪个部分对从数据库取出数据然后加载到模型中的.然后就一直跟踪源代码.先看框架get方法通过打印models发现getMod
- hyperf中的缓存之CacheEvict
谢高升
hyperfphpswoole缓存redis数据库
在开发中难免会遇到要批量删除一些缓存,hyperf的注解中提供了关于缓存的几个注解如下Cacheable生成缓存的,根据你的返回值生成缓存参数($prefix,$value,$ttl,$listener,$offset,$group,$collect)CachePut更新缓存参数($prefix,$value,$ttl,$offset,$group,$collect)CacheEvict注解是来删
- Hyperf框架 - 缓存Cache操作
raoxiaoya
#swoole
编写Cache代理类get(CacheInterface::class);}publicstaticfunction__callStatic($name,$arguments){returnself::getInstance()->$name(...$arguments);}}使用Cache::getInstance()->set('test',['name'=>'123','age'=>'123
- Hyperf模型缓存使用阿里云redis集群问题
daninedd
hyperf阿里云redis缓存
问题使用Hyperf框架的模型缓存,服务器是阿里云的redis企业版集群,当使用Model::findManyFromCache时发现报错,而在单机redis的时候不会出现问题最后追踪到vendor/hyperf/model-cache/src/Redis/HashGetMultiple.php的getScript方法,正是因为这段脚本出现了问题。然后去翻阿里云文档,发现看到这里就明白解决方案了。
- hyperf 二十四 模型缓存
lsswear
phpphphyperf
教程:Hyperf一安装及配置1.1安装目前仅支持redis。composerrequirehyperf/model-cache1.2配置配置位置:config/autoload/databases.php配置类型默认值备注handlerstringHyperf\ModelCache\Handler\RedisHandler::class无cache_keystringmc:%s:m:%s:%s:
- hyperf| hyperf/metric 上手指南
daydaygo
date:2019-11-0116:25:45title:hyperf|hyperf/metric上手指南这期又开始聊微服务的基础设施之一:实时监控.更准确的说法,基于prometheus的实时监控.关于技术选型这里就不多啰嗦啦,很多时候「从众」或者「用脚投票」往往是最有效的真的猛士,敢于走少有人走的路.我们选择prometheus,这条猛士已经走过的路.prometheus实战之所以先把实战放上
- composer安装hyperf后,nginx配置hyperf
摩尔小哥
composernginxphp
背景引入hyperf项目用作微服务,使用composer安装hyperf后,对hyperf进行nginx配置。配置步骤因为hyperf监听的是端口,不像其他laravel、lumen直接指向文件即可。所有要监听端口号。1配置nginxserver{listen80;//http:80https:443根据你自己需要配置server_namejms.51about.com;//此处域名根据你配置的域
- hyperf 二十三 分页
lsswear
phpphphyperf
教程:Hyperf参考:hyperf十、分页-CSDN博客illuminate/database使用一_illuminatedb类-CSDN博客hyperf二十二数据库模型关系-CSDN博客一分页查询1.1原理根据文档,可以使用model的paginate()和query的paginate()。根据源码model中BelongsToMany和HasManyThrough都有paginate()方法
- 急性缺血性卒中缺血半暗带体积测量:多延迟ASL与CTP对比研究
影浮科技ImageFlow
文献信息Title:MultidelayArterialSpinLabelingVersusComputedTomographyPerfusioninPenumbraVolumeofAcuteIschemicStrokeYear:2023JournalName/ImpactFactor:Stroke/10.170DOI:10.1161/STROKEAHA.122.040759导读缺血半暗带的存在与
- hyperf 遇到的情况总结
Aring88
个人总结hyperfhyperf
楼主已经转go,不再更新hyperf踩过的坑楼主已经转go,不再更新协程变量注解注入坑启动启动没扫描文件报没有input()内存常驻构造函数实例化类bug继承协程变量publicconstconst=1000;publicstatic$static;publicfunctionsetvar(){$this->var='var';self::$static='static';Context::set
- Hyperface笔记
AI视觉网奇
人脸识别目标检测姿态检测
论文地址:《2016PAMIHyperFace:ADeepMulti-taskLearningFrameworkforFaceDetection,LandmarkLocalization,PoseEstimation,andGenderRecognition.感谢:https://blog.csdn.net/LEE18254290736/article/details/84110996.Hyper
- hyperf 和 laravel、lumen防止xss攻击中间件封装
摩尔小哥
laravelxss中间件hyperf
hyperf防止xss攻击自定义中间件封装container=$container;}publicfunctionprocess(ServerRequestInterface$request,RequestHandlerInterface$handler):ResponseInterface{$input=$request->all();array_walk_recursive($input,fu
- soar-php 2.0 - SQL 语句优化器和重写器的 PHP 扩展包、 方便 SQL 语句调优
guanguans
soar-php是一个基于小米公司开源的soar开发的PHP扩展包,方便框架中SQL语句调优。image环境要求PHP>=7.1ext-pdo框架中使用Laravel-laravel-web-soarThinkPHP-think-soarHyperf-hyperf-soarYii2SymfonySlim安装$composerrequireguanguans/soar-php--dev使用下载Xia
- hyperf 二十二 数据库 模型关系
lsswear
phphyperfphp
教程:Hyperf一预加载1.1原理通过设置Hyperf\Database\Model\Builder::eagerLoad加载需查询用的model,查询条件子查询使用in。eagerLoad在Builder::eagerLoadRelations()被调用,传入Builder::eagerLoadRelation()。eagerLoadRelation()中调用addEagerConstrain
- hyperf 二十一 数据库 模型关系
lsswear
phpphphyperf
教程:Hyperf一定义关联根据文档一对一:Model::hasOne(被关联模型,被关联模型外键,本模型被关联的字段)一对多:Model::hasMany(被关联模型,被关联模型外键,本模型被关联的字段)反向一对多:Model::belongsTo(被关联模型,本模型外键,被关联模型的对应字段,关联关系)多对多:Model::belongsToMany(被关联模型,自定义连接表名,该模型在连接表
- docker使用Dockerfile制做容器(以hyperf为列,开机启动)
大得369
docker容器运维
1、Dockerfile文件FROMhyperf/hyperf:8.1-alpine-v3.18-swooleWORKDIR/dataMAINTAINERdadeADDstart.shstart.shRUNchmod+x./start.shCMD/data/start.sh1-1、执行命令生成hyperf:latest容器(文件名是Dockerfile可以省略,如果是其它文件名需要写上docker
- Linux的Initrd机制
被触发
linux
Linux 的 initrd 技术是一个非常普遍使用的机制,linux2.6 内核的 initrd 的文件格式由原来的文件系统镜像文件转变成了 cpio 格式,变化不仅反映在文件格式上, linux 内核对这两种格式的 initrd 的处理有着截然的不同。本文首先介绍了什么是 initrd 技术,然后分别介绍了 Linux2.4 内核和 2.6 内核的 initrd 的处理流程。最后通过对 Lin
- maven本地仓库路径修改
bitcarter
maven
默认maven本地仓库路径:C:\Users\Administrator\.m2
修改maven本地仓库路径方法:
1.打开E:\maven\apache-maven-2.2.1\conf\settings.xml
2.找到
 
- XSD和XML中的命名空间
darrenzhu
xmlxsdschemanamespace命名空间
http://www.360doc.com/content/12/0418/10/9437165_204585479.shtml
http://blog.csdn.net/wanghuan203/article/details/9203621
http://blog.csdn.net/wanghuan203/article/details/9204337
http://www.cn
- Java 求素数运算
周凡杨
java算法素数
网络上对求素数之解数不胜数,我在此总结归纳一下,同时对一些编码,加以改进,效率有成倍热提高。
第一种:
原理: 6N(+-)1法 任何一个自然数,总可以表示成为如下的形式之一: 6N,6N+1,6N+2,6N+3,6N+4,6N+5 (N=0,1,2,…)
- java 单例模式
g21121
java
想必单例模式大家都不会陌生,有如下两种方式来实现单例模式:
class Singleton {
private static Singleton instance=new Singleton();
private Singleton(){}
static Singleton getInstance() {
return instance;
}
- Linux下Mysql源码安装
510888780
mysql
1.假设已经有mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz
(1)创建mysql的安装目录及数据库存放目录
解压缩下载的源码包,目录结构,特殊指定的目录除外:
- 32位和64位操作系统
墙头上一根草
32位和64位操作系统
32位和64位操作系统是指:CPU一次处理数据的能力是32位还是64位。现在市场上的CPU一般都是64位的,但是这些CPU并不是真正意义上的64 位CPU,里面依然保留了大部分32位的技术,只是进行了部分64位的改进。32位和64位的区别还涉及了内存的寻址方面,32位系统的最大寻址空间是2 的32次方= 4294967296(bit)= 4(GB)左右,而64位系统的最大寻址空间的寻址空间则达到了
- 我的spring学习笔记10-轻量级_Spring框架
aijuans
Spring 3
一、问题提问:
→ 请简单介绍一下什么是轻量级?
轻量级(Leightweight)是相对于一些重量级的容器来说的,比如Spring的核心是一个轻量级的容器,Spring的核心包在文件容量上只有不到1M大小,使用Spring核心包所需要的资源也是很少的,您甚至可以在小型设备中使用Spring。
 
- mongodb 环境搭建及简单CURD
antlove
WebInstallcurdNoSQLmongo
一 搭建mongodb环境
1. 在mongo官网下载mongodb
2. 在本地创建目录 "D:\Program Files\mongodb-win32-i386-2.6.4\data\db"
3. 运行mongodb服务 [mongod.exe --dbpath "D:\Program Files\mongodb-win32-i386-2.6.4\data\
- 数据字典和动态视图
百合不是茶
oracle数据字典动态视图系统和对象权限
数据字典(data dictionary)是 Oracle 数据库的一个重要组成部分,这是一组用于记录数据库信息的只读(read-only)表。随着数据库的启动而启动,数据库关闭时数据字典也关闭 数据字典中包含
数据库中所有方案对象(schema object)的定义(包括表,视图,索引,簇,同义词,序列,过程,函数,包,触发器等等)
数据库为一
- 多线程编程一般规则
bijian1013
javathread多线程java多线程
如果两个工两个以上的线程都修改一个对象,那么把执行修改的方法定义为被同步的,如果对象更新影响到只读方法,那么只读方法也要定义成同步的。
不要滥用同步。如果在一个对象内的不同的方法访问的不是同一个数据,就不要将方法设置为synchronized的。
- 将文件或目录拷贝到另一个Linux系统的命令scp
bijian1013
linuxunixscp
一.功能说明 scp就是security copy,用于将文件或者目录从一个Linux系统拷贝到另一个Linux系统下。scp传输数据用的是SSH协议,保证了数据传输的安全,其格式如下: scp 远程用户名@IP地址:文件的绝对路径
- 【持久化框架MyBatis3五】MyBatis3一对多关联查询
bit1129
Mybatis3
以教员和课程为例介绍一对多关联关系,在这里认为一个教员可以叫多门课程,而一门课程只有1个教员教,这种关系在实际中不太常见,通过教员和课程是多对多的关系。
示例数据:
地址表:
CREATE TABLE ADDRESSES
(
ADDR_ID INT(11) NOT NULL AUTO_INCREMENT,
STREET VAR
- cookie状态判断引发的查找问题
bitcarter
formcgi
先说一下我们的业务背景:
1.前台将图片和文本通过form表单提交到后台,图片我们都做了base64的编码,并且前台图片进行了压缩
2.form中action是一个cgi服务
3.后台cgi服务同时供PC,H5,APP
4.后台cgi中调用公共的cookie状态判断方法(公共的,大家都用,几年了没有问题)
问题:(折腾两天。。。。)
1.PC端cgi服务正常调用,cookie判断没
- 通过Nginx,Tomcat访问日志(access log)记录请求耗时
ronin47
一、Nginx通过$upstream_response_time $request_time统计请求和后台服务响应时间
nginx.conf使用配置方式:
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_r
- java-67- n个骰子的点数。 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。
bylijinnan
java
public class ProbabilityOfDice {
/**
* Q67 n个骰子的点数
* 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。
* 在以下求解过程中,我们把骰子看作是有序的。
* 例如当n=2时,我们认为(1,2)和(2,1)是两种不同的情况
*/
private stati
- 看别人的博客,觉得心情很好
Cb123456
博客心情
以为写博客,就是总结,就和日记一样吧,同时也在督促自己。今天看了好长时间博客:
职业规划:
http://www.iteye.com/blogs/subjects/zhiyeguihua
android学习:
1.http://byandby.i
- [JWFD开源工作流]尝试用原生代码引擎实现循环反馈拓扑分析
comsci
工作流
我们已经不满足于仅仅跳跃一次,通过对引擎的升级,今天我测试了一下循环反馈模式,大概跑了200圈,引擎报一个溢出错误
在一个流程图的结束节点中嵌入一段方程,每次引擎运行到这个节点的时候,通过实时编译器GM模块,计算这个方程,计算结果与预设值进行比较,符合条件则跳跃到开始节点,继续新一轮拓扑分析,直到遇到
- JS常用的事件及方法
cwqcwqmax9
js
事件 描述
onactivate 当对象设置为活动元素时触发。
onafterupdate 当成功更新数据源对象中的关联对象后在数据绑定对象上触发。
onbeforeactivate 对象要被设置为当前元素前立即触发。
onbeforecut 当选中区从文档中删除之前在源对象触发。
onbeforedeactivate 在 activeElement 从当前对象变为父文档其它对象之前立即
- 正则表达式验证日期格式
dashuaifu
正则表达式IT其它java其它
正则表达式验证日期格式
function isDate(d){
var v = d.match(/^(\d{4})-(\d{1,2})-(\d{1,2})$/i);
if(!v) {
this.focus();
return false;
}
}
<input value="2000-8-8" onblu
- Yii CModel.rules() 方法 、validate预定义完整列表、以及说说验证
dcj3sjt126com
yii
public array rules () {return} array 要调用 validate() 时应用的有效性规则。 返回属性的有效性规则。声明验证规则,应重写此方法。 每个规则是数组具有以下结构:array('attribute list', 'validator name', 'on'=>'scenario name', ...validation
- UITextAttributeTextColor = deprecated in iOS 7.0
dcj3sjt126com
ios
In this lesson we used the key "UITextAttributeTextColor" to change the color of the UINavigationBar appearance to white. This prompts a warning "first deprecated in iOS 7.0."
Ins
- 判断一个数是质数的几种方法
EmmaZhao
Mathpython
质数也叫素数,是只能被1和它本身整除的正整数,最小的质数是2,目前发现的最大的质数是p=2^57885161-1【注1】。
判断一个数是质数的最简单的方法如下:
def isPrime1(n):
for i in range(2, n):
if n % i == 0:
return False
return True
但是在上面的方法中有一些冗余的计算,所以
- SpringSecurity工作原理小解读
坏我一锅粥
SpringSecurity
SecurityContextPersistenceFilter
ConcurrentSessionFilter
WebAsyncManagerIntegrationFilter
HeaderWriterFilter
CsrfFilter
LogoutFilter
Use
- JS实现自适应宽度的Tag切换
ini
JavaScripthtmlWebcsshtml5
效果体验:http://hovertree.com/texiao/js/3.htm
该效果使用纯JavaScript代码,实现TAB页切换效果,TAB标签根据内容自适应宽度,点击TAB标签切换内容页。
HTML文件代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
- Hbase Rest API : 数据查询
kane_xie
RESThbase
hbase(hadoop)是用java编写的,有些语言(例如python)能够对它提供良好的支持,但也有很多语言使用起来并不是那么方便,比如c#只能通过thrift访问。Rest就能很好的解决这个问题。Hbase的org.apache.hadoop.hbase.rest包提供了rest接口,它内嵌了jetty作为servlet容器。
启动命令:./bin/hbase rest s
- JQuery实现鼠标拖动元素移动位置(源码+注释)
明子健
jqueryjs源码拖动鼠标
欢迎讨论指正!
print.html代码:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<title>发票打印</title>
&l
- Postgresql 连表更新字段语法 update
qifeifei
PostgreSQL
下面这段sql本来目的是想更新条件下的数据,可是这段sql却更新了整个表的数据。sql如下:
UPDATE tops_visa.visa_order
SET op_audit_abort_pass_date = now()
FROM
tops_visa.visa_order as t1
INNER JOIN tops_visa.visa_visitor as t2
ON t1.
- 将redis,memcache结合使用的方案?
tcrct
rediscache
公司架构上使用了阿里云的服务,由于阿里的kvstore收费相当高,打算自建,自建后就需要自己维护,所以就有了一个想法,针对kvstore(redis)及ocs(memcache)的特点,想自己开发一个cache层,将需要用到list,set,map等redis方法的继续使用redis来完成,将整条记录放在memcache下,即findbyid,save等时就memcache,其它就对应使用redi
- 开发中遇到的诡异的bug
wudixiaotie
bug
今天我们服务器组遇到个问题:
我们的服务是从Kafka里面取出数据,然后把offset存储到ssdb中,每个topic和partition都对应ssdb中不同的key,服务启动之后,每次kafka数据更新我们这边收到消息,然后存储之后就发现ssdb的值偶尔是-2,这就奇怪了,最开始我们是在代码中打印存储的日志,发现没什么问题,后来去查看ssdb的日志,才发现里面每次set的时候都会对同一个key