草庐IT

研究光度立体法阶段性小结和优化(可20ms获取4个2500*2000灰度图的Normal Map)。

 这个东西是我接触的第一个非2D方面的算法,到目前为止其实也没有完全搞定,不过可能短时间内也无法突破。先把能搞定的搞定吧。 这个东西也有一大堆参考资料,不过呢,搜来搜去其实也就那些同样的东西,个人觉得就属这个文章最经典,既有说明,也有图片,还有代码:   PhotometricStereo    ChamanSinghVermaandMon-JuWu     https://pages.cs.wisc.edu/~csverma/CS766_09/Stereo/stereo.html  另外,github上也应该有一些参考的资料吧,我主要参考的是  https://github.com/chao

研究光度立体法阶段性小结和优化(可20ms获取4个2500*2000灰度图的Normal Map)。

 这个东西是我接触的第一个非2D方面的算法,到目前为止其实也没有完全搞定,不过可能短时间内也无法突破。先把能搞定的搞定吧。 这个东西也有一大堆参考资料,不过呢,搜来搜去其实也就那些同样的东西,个人觉得就属这个文章最经典,既有说明,也有图片,还有代码:   PhotometricStereo    ChamanSinghVermaandMon-JuWu     https://pages.cs.wisc.edu/~csverma/CS766_09/Stereo/stereo.html  另外,github上也应该有一些参考的资料吧,我主要参考的是  https://github.com/chao

一种可灰度的接口迁移方案

在快速迭代的互联网背景下,系统为了实现快速上线,常常会选择最快的开发模式,例如我们常见的mvp版本迭代。大部分的业务系统对于未来业务的发展是不确定的,因此随着时间的推移,往往会遇到各种各样的瓶颈,例如系统性能、无法适配业务逻辑等问题,这时可能就涉及到系统架构的升级。系统升级往往包含最基础的两个部分:接口迁移重构和数据迁移重构,在系统架构升级的过程中,最重要的是需要保证系统稳定性,即用户不感知。因此文本的目的是提供一种可灰度、回滚的设计思路,实现稳定的架构升级。场景在我们系统迭代过程中,往往涉及到重构、数据源切换、接口迁移等场景,为了保障系统平稳上线,因此在接口迁移过程中应该保证可回滚、可灰度。

一种可灰度的接口迁移方案

在快速迭代的互联网背景下,系统为了实现快速上线,常常会选择最快的开发模式,例如我们常见的mvp版本迭代。大部分的业务系统对于未来业务的发展是不确定的,因此随着时间的推移,往往会遇到各种各样的瓶颈,例如系统性能、无法适配业务逻辑等问题,这时可能就涉及到系统架构的升级。系统升级往往包含最基础的两个部分:接口迁移重构和数据迁移重构,在系统架构升级的过程中,最重要的是需要保证系统稳定性,即用户不感知。因此文本的目的是提供一种可灰度、回滚的设计思路,实现稳定的架构升级。场景在我们系统迭代过程中,往往涉及到重构、数据源切换、接口迁移等场景,为了保障系统平稳上线,因此在接口迁移过程中应该保证可回滚、可灰度。

得物社区 Golang 灰度环境探索和实践

1、背景灰度发布可以在服务正式上线前,提前用小流量对新功能进行验证,提前发现问题,避免故障影响所有用户,对业务稳定性非常有价值。得物社区后端技术栈以golang为主,本文记录了社区后端在灰度环境建设过程中遇到的挑战,以及对应的探索和实践。名词解释小得物:得物内部小流量灰度环境。ARK:得物内部配置中心。DLB:得物内部负载均衡中间件。DMQ:得物内部消息中间件。DRPC:golang后端RPC系统。本文对涉及内部敏感信息部分做了打码和脱敏处理,敬请理解。2、小得物灰度引流架构优化2.1   小得物V1跟Java网关对接注册中心不同,社区HTTP是依赖容器Service和Ingress。对社区来

得物社区 Golang 灰度环境探索和实践

1、背景灰度发布可以在服务正式上线前,提前用小流量对新功能进行验证,提前发现问题,避免故障影响所有用户,对业务稳定性非常有价值。得物社区后端技术栈以golang为主,本文记录了社区后端在灰度环境建设过程中遇到的挑战,以及对应的探索和实践。名词解释小得物:得物内部小流量灰度环境。ARK:得物内部配置中心。DLB:得物内部负载均衡中间件。DMQ:得物内部消息中间件。DRPC:golang后端RPC系统。本文对涉及内部敏感信息部分做了打码和脱敏处理,敬请理解。2、小得物灰度引流架构优化2.1   小得物V1跟Java网关对接注册中心不同,社区HTTP是依赖容器Service和Ingress。对社区来

SpringCloud 优雅下线+灰度发布

在生产环境中,如何保证在服务升级的时候,不影响用户的体验,这个是一个非常重要的问题。如果在我们升级服务的时候,会造成一段时间内的服务不可用,这就是不够优雅的。那什么是优雅的呢?主要就是指在服务升级的时候,不中断整个服务,让用户无感知,进而不会影响用户的体验,这就是优雅的。实际上,优雅下线是目标,而不是手段,它是一个相对的概念,例如killPID和kill-9PID都是暴力杀死服务,相对于kill-9PID来说,killPID就是优雅的。但如果单独拿killPID出来说,我们能说它是优雅的下线策略吗?肯定不是啊,就是这个道理。因此,本文讲述的优雅下线仅能称之为“相对的优雅下线”,但相对于暴力的杀

SpringCloud 优雅下线+灰度发布

在生产环境中,如何保证在服务升级的时候,不影响用户的体验,这个是一个非常重要的问题。如果在我们升级服务的时候,会造成一段时间内的服务不可用,这就是不够优雅的。那什么是优雅的呢?主要就是指在服务升级的时候,不中断整个服务,让用户无感知,进而不会影响用户的体验,这就是优雅的。实际上,优雅下线是目标,而不是手段,它是一个相对的概念,例如killPID和kill-9PID都是暴力杀死服务,相对于kill-9PID来说,killPID就是优雅的。但如果单独拿killPID出来说,我们能说它是优雅的下线策略吗?肯定不是啊,就是这个道理。因此,本文讲述的优雅下线仅能称之为“相对的优雅下线”,但相对于暴力的杀

nginx 根据IP 进行灰度发布

灰度发布,简单来说,就是根据各种条件,让一部分用户使用旧版本,另一部分用户使用新版本。nginx的语法本身可以看作是一门小型的编程语言,通过简单的编程,可以轻松实现基于IP的灰度发布。需求:搭建准生产环境,供开发人员/运维在线上做最后的调整。如果OK,直接用rsync推送至生产环境。条件:办公室网络出口有固定IP解决办法:nginx负载均衡器判断客户端IP地址,如果是办公室IP,则反向代理到准生产环境;如果不是,则反向代理到生产环境。upstreamprod{server192.168.1.10;server192.168.1.11;}upstreampre-prod{server192.16

nginx 根据IP 进行灰度发布

灰度发布,简单来说,就是根据各种条件,让一部分用户使用旧版本,另一部分用户使用新版本。nginx的语法本身可以看作是一门小型的编程语言,通过简单的编程,可以轻松实现基于IP的灰度发布。需求:搭建准生产环境,供开发人员/运维在线上做最后的调整。如果OK,直接用rsync推送至生产环境。条件:办公室网络出口有固定IP解决办法:nginx负载均衡器判断客户端IP地址,如果是办公室IP,则反向代理到准生产环境;如果不是,则反向代理到生产环境。upstreamprod{server192.168.1.10;server192.168.1.11;}upstreampre-prod{server192.16