JAVA研发项目中遇到得问题

本文分享了作者在微服务项目中遇到并解决的Kong网关问题,包括500错误的根源及解决方案,hystrix超时设置无效的应对策略,以及Long类型比较的常见误区。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   最近发现自己懒惰了,很久没有一直更新优快云了。也不是说工作中项目很忙,而是自己没有按照自己得规定来做,以前说得是一天更新一篇文章,后来,发现一天更新,自己更加没有精力去弄。就说一周更新一天,发现还是无法去实践。但是为了让自己能力提升,还是需要严格得要求自己,提升自己。毕竟从毕业到现在也是四年多了,从事JAVA开发也是五年多,如果对自己能力没有提升得话,这在后面来说,那就是自己还是一个码农得。因为我希望自己改变,接触更多得市场,然后朝产品或者研发管理转型。最近由于自己得选择,还是没有实际得去做这方便得工作。先说说在工作过程中遇到的比较棘手的问题,记录下来。

一:Kong网关的问题

   最近一个项目中发现问题,在整个微服务体系中,在前端调用服务时候,总是会在前端显示500问题。这个问题差不多花费一周多时间去定位。当时觉得就是后端服务问题,然后通过k8s下载日志,提取日志信息,再发现测试人员出现错误的那个时间点没有错误。看了日志,没发现什么。然后猜测是不是日志信息不全,由此在网关将日志信息打印的更全,以方便大家定位问题。第二步,再猜测了前端日志接受http请求时候,nodjs没有将code打印出来。所以在前端的时候也打印日志,但是确实没有发现任何消息,后来想的是,前端,后端的日志都没问题,那是什么呢?所以最后叫运维把他们收集的日志,在Kong网关里的日志发给大家分析,在分析过程中,发现了如下错误信息。

代码如下:

 

2018/11/30 06:01:43 [error] 51#0: *40188129 lua entry thread aborted: runtime error: /usr/local/share/lua/5.1/pgmoon/init.lua:294: bad request
stack traceback:
coroutine 0:
	[C]: in function 'post'
	/usr/local/share/lua/5.1/pgmoon/init.lua:294: in function 'execute'
	...local/share/lua/5.1/kong/db/strategies/postgres/init.lua:565: in function 'page'
	...local/share/lua/5.1/kong/db/strategies/postgres/init.lua:819: in function 'each'
	/usr/local/share/lua/5.1/kong/db/dao/init.lua:244: in function 'each'
	/usr/local/share/lua/5.1/kong/core/handler.lua:83: in function 'build_router'
	/usr/local/share/lua/5.1/kong/core/handler.lua:456: in function 'before'
	/usr/local/share/lua/5.1/kong/init.lua:391: in function 'access'
	access_by_lua(nginx-kong.conf:89):2: in function <access_by_lua(nginx-kong.conf:89):1>, client: 10.128.1.11, server: kong, request: "GET 

 然后在google中搜索,发现是Kong网关版本的bug,我们采用的是0.3版本的,有这个问题的,时不时的会出现500问题。官网建议更新版本,可以避免这个问题出现,由此,升级版本后,终于解决了500问题。

二:hystrix超时设置不生效

   在网关中,服务之间调用外部接口,hystrix默认的是1秒。当时遇到的问题就是一个服务在调用一个外部接口时候,总是莫名的调用超时,前端就报错500。通过日志发现,后端有错误。就是服务间返回超时,超过一秒就出现错误。时不时的在前端报错,由此发现,直接让这个hystrix不生效。设置如下:

hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: false

但是这个设置是没有生效的,具体原因还没找到。后面灵机一动,加上了下面参数:

 isolation:
          thread:
            timeoutInMilliseconds: 60000

这样就好了,然后我一直想的是自己花点时间去看,为什么在gateway设置里不生效。但是在没办法的时候,一起填写,就好了。

三:马大哈留下的问题

 实际项目中,容易出现自己马大哈留下的问题。不知道怎么回事,自己在项目中遇到三次,关于Long运用的问题,代码如下:

followLine.getLineId() == runLineResp.getLineId()

两个整型的比较值,其实对于long,这个不是对象的是没问题的,但是对于Long行的,确实比较的是两个对象的地址,所以在项目中,很容易就写错,然后自己觉得这个地方肯定没问题。说不定需要发现好久才能发现了。其实应该修改成如下:

followLine.getLineId().longValue() == runLineResp.getLineId().longValue()

上面的这种方式就不会有问题了,我是在这上面采坑是三次了。自己都有点想笑。

以后不管怎样,还是需要多锻炼将自己遇到的问题记录下来,这样以后自己也可以来寻找发生的原因。今天在微信群里发现一个搞笑的语段,下面贴下来,说不定有人都知道了。

受长辈之托,帮亲戚征婚
女,23岁,985毕业,未婚,身高
168cm,体重48KG,成都青羊区人
目前在阿里巴巴工作,负责蚂蚁金服业务,工号: 529234345
支付宝搜索工号可见照片
长相气质甜美,爱好读书、健身、旅游,不拜金。
个人有房全款,已买车奔驰e级。
母亲成都市委系统,父亲成都烟草局系统,家人本分,开明。
要求对方父母身体健康,无房无车也没关系,只求真心对她好。
复制568281457到支付宝搜索可见照片

看见这个的时候,不知道作为程序猿的大家如何感想。。。。。。

 

568281457到支付宝搜索可见照片

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值