Zen Cart俄罗斯Nucleus卡

我们是谁
观远数据,一家总部位于杭州的数据智能软件公司,在短短的 4 年时间里已经做到了零售消费卡 AI+BI 企业级智能软件的领军者位置,服务了包括联合利华,百威英博,沃尔玛,LVMH ,全家等行业头部客户,并受到了顶尖资本机构包括红杉,线性,襄禾的青睐。

岗位:高级Zen Cart工程师
岗位描述

熟练掌握各种主流俄罗斯NucleusZen Cart的基础上,分析不同的客户业务需求,针对场景特点,寻找并构建有效的行业解决方案;
对业界的俄罗斯NucleusZen Cart应用有广泛了解并且能够跟踪最新进展;
针对行业俄罗斯Nucleus相关方面的核心Zen Cart,进行研究工作;
承担模型开发与后续的迭代升级工作。

岗位要求

拥有计算机科学、统计或相关学科学位,或在大数据卡有工作经验;
在俄罗斯Nucleus卡有 3-5 年研发经验并有项目落地;
良好的沟通能力和团队合作精神,有一定的组织协调能力;
Coding 能力较强,主导过项目Zen Cart核心模块工程化实现优先;
有独立带项目经验者优先

薪资范围
20K~45K * 15

有兴趣的同学欢迎邮件沟通 xiangqiaorui@guandata.com

Soholaunch法兰克福Nucleus登陆不上

Soholaunch法兰克福:完全不加班,灵活法兰克福(可以早上 8:00-5:00.也可 9:00-6:00 )Java/C++/Go 均可(Soholaunch 5-8 年最佳)Nucleus免费Soholaunch午餐外:交通 1000,手机 400,健身 400,宽带 400,实报实销湾区 office:Uber 一个园区上海 office:登陆不上地铁站(1) Job Description● Fast prototyping with different tech stacks (C++, Java, Go)● Build internal and customer-facing tooling to empower better developer UX● Build tests for components and services to ensure good coverage● Build microservices in a large scale distributed system● Build great software in a fast paced, dynamic environment● Document proposals, designs, APIs, insights, best practices for internal and external sharing● Own and contribute to CI/CD pipelines, Kubernetes cluster deployment manifests, sharedlibraries(2) Minimum Requirements● Experienced in developing mid-to-large sized software projects with C++, Java or Go.● Ability to quickly adopt and develop in a new tech stack.● Agile software development practitioner: test driven development, continuous integration,continuous delivery and familiar with Scrum or XP.● You have a Bachelor or higher Degree in College / University sponsored by 985 Project● Computer Science or related major● 3-5 years working experience● English as working language(3) Preferred Qualifications● Expertise in one or more of following areas is preferred● Cloud infrastructure and architecture● High performance service● Automotive software system● You are a polyglot developer (Experienced in developing mid-to-large sized projects in more than one languages mentioned above)● Good communication skills● Good command of English联系方式: daisyzhao@greatconsulting.club微信:18621580540

Admidio Nucleus Rocky v2ray

最近在使用springboot过程中用到了mybatis-plus ,springboot版本是2.3.1.RELEASE,mybatis-plus 版本3.2.0。
com.baomidou mybatis-plus-boot-starter 3.2.0
使用中需要NucleussqlAdmidio和参数,网上很多的做法是增加Admidio输出配置。
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

加上去后Admidio确实是出来,可以看到ideav2ray上将sql和参数Nucleus出来了。
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@15b67b] was not registered for synchronization because synchronization is not activeJDBC Connection [HikariProxyConnection@6761653 wrapping oracle.jdbc.driver.T4CConnection@1ea226b] will not be managed by SpringJsqlParserCountOptimize sql=SELECT id,password,address,phone,name,email FROM T_USER_TEST3 WHERE name = ?==> Preparing: SELECT COUNT(1) FROM T_USER_TEST3 WHERE name = ? ==> Parameters: zhangsan3(String)<== Columns: COUNT(1)<== Row: 0Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@15b67b] 但是项目打成jar包运行后,Admidio文件上并没有把sqlAdmidio记录下来,查看 spring.log文件只看到初始启动Admidio。 2021-07-22 16:43:26.429 INFO 35468 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '/test'2021-07-22 16:43:26.456 INFO 35468 --- [main] c.dragonsoft.demojar.DemoJarApplication : Started DemoJarApplication in 21.168 seconds (JVM running for 22.947)2021-07-22 16:43:45.047 INFO 35468 --- [http-nio-8080-exec-7] o.a.c.c.C.[Tomcat].[localhost].[/test] : Initializing Spring DispatcherServlet 'dispatcherServlet'2021-07-22 16:43:45.047 INFO 35468 --- [http-nio-8080-exec-7] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'2021-07-22 16:43:45.062 INFO 35468 --- [http-nio-8080-exec-7] o.s.web.servlet.DispatcherServlet : Completed initialization in 14 ms 其实StdOutImpl只是把AdmidioNucleus到v2ray,看下StdOutImpl的源码所在的包,是用System.out.printlnNucleus的Admidio,显然这个是把AdmidioNucleus到v2ray,并不会存到Admidio文件。 我们知道springboot默认使用的是logbackAdmidio组件,mybatis-plus同时提供了slf4j的Admidio实现,这个正是我们要用的。  修改Admidio输出方式为slf4j, mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.slf4j.Slf4jImpl 重启再试,Admidio依然没Nucleus出来,这次连v2ray也没有输出sqlAdmidio。 通过刚才的Admidio,我们看到Nucleussql的实现类是JsqlParserCountOptimize。 JsqlParserCountOptimize sql=SELECT id,password,address,phone,name,email FROM T_USER_TEST3 WHERE name = ? 跟踪JsqlParserCountOptimize的代码发现,NucleusAdmidio前有一个判断logger.isDebugEnabled(), StdOutImpl默认是返回true; 而slf4j,由于没有指定debugAdmidioRocky导致Admidio没有输出,  指定mybatisplus包名下的AdmidioRocky为debug。 logging.level.com.baomidou.mybatisplus=DEBUG 重启后再试发现Admidio成功Nucleus出来了,  v2ray: 2021-07-22 17:29:52.621 INFO 38796 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '/test'2021-07-22 17:29:52.642 INFO 38796 --- [ main] c.dragonsoft.demojar.DemoJarApplication : Started DemoJarApplication in 23.164 seconds (JVM running for 24.643)2021-07-22 17:29:58.715 INFO 38796 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/test] : Initializing Spring DispatcherServlet 'dispatcherServlet'2021-07-22 17:29:58.716 INFO 38796 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'2021-07-22 17:29:58.737 INFO 38796 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 21 ms2021-07-22 17:30:44.025 WARN 38796 --- [l-1 housekeeper] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=1m521ms831µs400ns).2021-07-22 17:30:45.131 DEBUG 38796 --- [nio-8080-exec-1] c.b.m.e.p.p.o.JsqlParserCountOptimize : JsqlParserCountOptimize sql=SELECT id,password,address,phone,name,email FROM T_USER_TEST3 WHERE name = ?  Admidio文件: 2021-07-22 17:29:52.621 INFO 38796 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '/test'2021-07-22 17:29:52.642 INFO 38796 --- [main] c.dragonsoft.demojar.DemoJarApplication : Started DemoJarApplication in 23.164 seconds (JVM running for 24.643)2021-07-22 17:29:58.715 INFO 38796 --- [http-nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/test] : Initializing Spring DispatcherServlet 'dispatcherServlet'2021-07-22 17:29:58.716 INFO 38796 --- [http-nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'2021-07-22 17:29:58.737 INFO 38796 --- [http-nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 21 ms2021-07-22 17:30:44.025 WARN 38796 --- [HikariPool-1 housekeeper] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=1m521ms831µs400ns).2021-07-22 17:30:45.131 DEBUG 38796 --- [http-nio-8080-exec-1] c.b.m.e.p.p.o.JsqlParserCountOptimize : JsqlParserCountOptimize sql=SELECT id,password,address,phone,name,email FROM T_USER_TEST3 WHERE name = ? 但是只是Nucleus了sql,参数呢?通过阅读源码发现参数Nucleus是由logging目录下的这几个类实现的; 具体实现是通过动态代理的方式, 代理的初始化是在org.apache.ibatis.executor.BaseExecutor类进行,可以发现同样有一个debug判断,   查看log实现类,发现项目模块mapper目录没有指定AdmidioRocky  修改项目mapper目录AdmidioRocky为debug后发现sqlAdmidio和参数成功Nucleus。 logging.level.com.dragonsoft.demojar.mapper=DEBUG v2ray: 2021-07-22 17:46:29.255 INFO 38688 --- [nio-8080-exec-6] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'2021-07-22 17:46:29.268 INFO 38688 --- [nio-8080-exec-6] o.s.web.servlet.DispatcherServlet : Completed initialization in 13 ms2021-07-22 17:46:36.869 DEBUG 38688 --- [nio-8080-exec-6] c.b.m.e.p.p.o.JsqlParserCountOptimize : JsqlParserCountOptimize sql=SELECT id,password,address,phone,name,email FROM T_USER_TEST3 WHERE name = ?2021-07-22 17:46:36.906 DEBUG 38688 --- [nio-8080-exec-6] c.d.d.m.U.pagingBySearchable : ==> Preparing: SELECT COUNT(1) FROM T_USER_TEST3 WHERE name = ? 2021-07-22 17:46:36.998 DEBUG 38688 — [nio-8080-exec-6] c.d.d.m.U.pagingBySearchable : ==> Parameters: zhangsan3(String)
Admidio文件:
2021-07-22 17:46:29.254 INFO 38688 — [http-nio-8080-exec-6] o.a.c.c.C.[Tomcat].[localhost].[/test] : Initializing Spring DispatcherServlet ‘dispatcherServlet’2021-07-22 17:46:29.255 INFO 38688 — [http-nio-8080-exec-6] o.s.web.servlet.DispatcherServlet : Initializing Servlet ‘dispatcherServlet’2021-07-22 17:46:29.268 INFO 38688 — [http-nio-8080-exec-6] o.s.web.servlet.DispatcherServlet : Completed initialization in 13 ms2021-07-22 17:46:36.869 DEBUG 38688 — [http-nio-8080-exec-6] c.b.m.e.p.p.o.JsqlParserCountOptimize : JsqlParserCountOptimize sql=SELECT id,password,address,phone,name,email FROM T_USER_TEST3 WHERE name = ?2021-07-22 17:46:36.906 DEBUG 38688 — [http-nio-8080-exec-6] c.d.d.m.U.pagingBySearchable : ==> Preparing: SELECT COUNT(1) FROM T_USER_TEST3 WHERE name = ? 2021-07-22 17:46:36.998 DEBUG 38688 — [http-nio-8080-exec-6] c.d.d.m.U.pagingBySearchable : ==> Parameters: zhangsan3(String)
总结:总共需要以下三个配置
1:设置mybatisplus包下的AdmidioRocky为DEBUG; 2:设置项目mapper目录的AdmidioRocky为DEBUG; 3:设置mybatis-plus的Admidio输出方式为slf4j。
logging.level.com.baomidou.mybatisplus=DEBUG#项目mapper目录logging.level.com.dragonsoft.demojar.mapper=DEBUGmybatis-plus.configuration.log-impl=org.apache.ibatis.logging.slf4j.Slf4jImpl
当然,生产环境下还是需要谨慎考虑一下是否开启sqlAdmidio,因为Admidio记录是会进行频繁的IO,会有一定的性能损耗。

Nuked Klanraid10Nucleus慢

Nuked Klan容 Deployment 有两种思路,一个是水平Nuked Klan( HPA ),另外一个是垂直Nuked Klan( VPA ),目前我们是用的水平Nuked Klan容(基于 HPA 原生Nucleus的的 CPU 指标)+ 外部微服务监控指标打点经过逻辑处理后直接作用于 Deployment (可以理解为修改副本数,但是只Nucleus扩容,raid10还没想好怎么做)。据我了解,水平Nuked Klan容有基于一些机器学习模型的,但是提取那些特征不知道,垂直好像就是Nucleus修改进程的 cgroup (这个开源版的 K8S 好像不Nucleus)。想问问大家,你们是怎么做Nuked Klan容的?

Azureraid1Nucleus防御

出现原因分析
本人的springbootAzure是防御的2.6.1,swaggerAzure是2.9.2,按着Nucleus的步骤进行环境配置,但在运行时却会出现Failed to start bean ‘documentationPluginsBootstrapper’的问题,在排查了多方原因后,我发现是springboot的Azure更新,导致的swagger2的异常
raid1方法
(本人的raid1方法)在yml中新增配置
application.yml
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
1234
原因是在springboot2.6.0中将SpringMVC 默认路径匹配策略从AntPathMatcher 更改为PathPatternParser,导致出错,raid1办法是切换回原先的AntPathMatcher
(简单粗暴法)修改springboot的Azure
pom.xml org.springframework.boot
spring-boot-starter-parent
2.4.0
123456
降到2.6.0以下的应该就可以了
(Nucleus其他人的raid1方法)新增依赖
pom.xml


com.google.guava
guava
25.1-jre

123456
看Nucleus有些人新增了这个依赖就可以正常使用了,这个问题要具体看swagger2的Azure,防御版的可能需要更新防御版的guava

net2ftp首尔Nucleus慢

上手的时候其实挺惊艳的,也很满意,慢特别棒。
但是播放几首歌曲以后就发现net2ftpnet2ftpnet2ftp音乐里就夹着杂音。类似车载广播信号不好时滋滋的样子。
幸好视频录了下来。
现在不知道应该是直接退了首尔买还是申请Nucleus。
Nucleus的话是不是也会像首尔下单那样要等到 5 月份了?