Arganzheng's Blog

stay hungry, stay foolish

nginx proxy_pass 的一个『坑』

前几天在配置线上的 nginx 的时候,遇到一个诡异的问题,还搞了蛮久,记录一下。 首先配置入口:nginx.conf #user nobody; worker_processes 4; error_log /home/work/nginx/logs/error.log; pid /home/work/nginx/logs/nginx.pid; #Specifies the value for maximum file descriptors that can be opened by this process. worker_rlimit_nofile 51200; events { use epoll; worke...

maven如何deploy到多个repositories

背景 公司的私服部署在测试环境,跟线上的环境在网络上是物理隔离的。导致在线上无法使用 maven 编译,因为拉取不到测试环境的私服。只能在线下进行打包,然后通过终端上传到线上机器,问题是打出来的包往往有几十上百 M,上传速度超级慢,还容易断开出错。 解决方案 因为网络是物理隔离的,所以只能在线上部署一个maven私服了。部署过程很简单,这里不赘述。但是部署完成之后有一个问题,就是需要将二方库也同时 deploy 到线上环境的私服。并且为了保证能够给其他团队使用,还需要保证原来的 deploy 到测试环境的私服照常。 经过调研,最后决定采用 maven 的profile 机制来保证不同的环境deploy到不同的repositories。 具体如下: 首先修...

关于编码规范的一些建议

1、为什么要编码规范 无规矩不成方圆,无规范不能协作。 在百度,每次代码提交都强制编码规范检查,不通过则不允许提交。 提升编码质量 提升代码的可读性、可测性、可维护性 提升团队开发协作的效率 个人品牌 2、业界大公司的编码规范 谷歌 java编码规范中文版本 java编码规范英文版本: Google Java Style Guide Java编码规范IDEA插件 Java编码规范Eclipse插件 阿里巴巴 阿里巴巴Java开发手册 手册书籍版天猫官方店: 阿里巴巴JAVA开发手册最新版 阿里巴巴编码规范IDEA插件 阿里巴巴编码规范Eclipse插件 TIPS 1、IDE中一键格式化代...

AI基础架构:从大数据到深度学习

背景 这个分享来自于创新工场人工智能工程院副院长王咏刚给创新工场暑期深度学习训练营 DeeCamp的培训课程的第一节课。(ps:这个训练营太火了,只招生 36 名,总共有 1000 多计算机专业同学报名,同学们来自 CMU、北大、清华、交大等最好的大学),后续会给大家讲《TensorFlow 实战》、《自然语言处理》、《机器视觉》、《无人驾驶实战》等框架和算法方向的课。 课件分享:AI 基础架构——从大数据到深度学习 下面是我给创新工场暑期深度学习训练营 DeeCamp 讲的时长两小时的内部培训课程《AI 基础架构:从大数据到深度学习》的全部课件。全部讲解内容过于细致、冗长,这里就不分享了。对每页课件,我在下面只做一个简单的文字概括。 注:以下这个课件...

微服务架构学习

微服务架构 微服务的概念在2014年3月由Martin Fowler首次提出。 微服务架构解决的核心问题及其相应的开源组件如下所示: RPC框架 (Service-to-service calls) Spring Boot/Spring MVC Dubbo gRPC thrift 服务注册和发现 (Service registration and discovery) 注册中心 Eureka: 在 Netflix 经过大规模生产验证,支持跨数据中心。 Consul: 天然支持跨数据中心,还支持 KV...

关于微服务架构

我 和 微服务架构 我算是完整的经历了服务端架构发展的整个历程。 09年进入阿里巴巴的时候,那时候整个阿里巴巴就是一个典型的单体应用,整个国际站业务,部署上就三个巨大的单体应用: MyAlibaba:供应商发布编辑管理商品的地方 BOPS: 运营人员审核商品(机器审核+人工审核的一条工作流)、管理类目和属性的运营管理后台。 Aisn: 海外买家浏览搜索商品的地方 数据层面也是杂糅在一起,一主一从的Oracle数据库 + EMC小型机支撑着几亿级别的数据量。 现在看起来当时的业务架构还是数据架构都是庞大而古老的。确实也是低效的,记得当时的发布真是设计部门最多并且容易出错的日常工作了。你仅仅是修改了一点点代码,也要跟所有当天一起发布的人合并验证...

Java各种锁介绍

Lock 接口 VS Synchronized 关键字 在Lock接口出现以前,Java程序是靠synchronized关键字实现锁功能的,而Java SE 5之后,并发包中新增了 Lock 接口(以及相关实现类)来实现锁的功能,它提供了与 Synchronized 关键字类似的同步功能。只是在使用的时候,需要显示地获取和释放锁。虽然它缺少了通过 Synchronized 块或者方法所提供的隐式获取释放锁的便捷性,但是却拥有了锁获取与释放的可操作性(灵活性)、可中断的获取锁、非阻塞的获取锁 以及 带超时获取锁 等多种 Synchronized 关键字所不具备的同步特性。 使用 Synchronized 关键字将会隐式的获取锁,但是它将锁的获取和释放固化了,也即是...

Redis集群学习

Redis3.0版本加入了cluster功能,解决了Redis单点无法横向扩展的问题。 分布式系统要解决的不外乎以下两个问题: sharding/partition 以提高系统的吞吐率 replication 以提高系统的高可用性 然后因为sharding了,所以就有一个 哈希或者路由 的事情要处理。引入的问题包括: 数据分布方式:取模, 范围映射,一致性哈希, etc. 客户端哈希还是服务端转发路由,如果需要客户端或者任意一个节点都能接受请求进行转发,那么就需要引入集群的概念,让集群中的节点能够互相知道数据的分布情况(相关技术参见下面讨论) 对于没有sharding key的请求(如果系统设计支持),需要有个scatter和gat...

ElasticSearch的节点类型

集群中的每一个ElasticSearch实例都可作为一个节点存在,相同集群名字的节点构成同一个ElasticSearch集群。 默认情况下,集群中的每个节点都可以处理 HTTP 或者 Transport 请求。 其中 transport 层专门用于节点和Java TransportClient之间的通讯;而HTTP层则只供REST客户端使用。 集群中所有的节点都知道集群中其他所有的节点,可以将客户端请求转发到适当的节点。 逻辑上,从职责上划分,ElasticSearch节点有以下类型: Master node: 主节点。当一个节点配置node.master: true(默认)的时候,它有资格被选作为主节点,控制整个集群。 Data node: 数据...

ElasticSearch如何支持深度分页

分布式环境下的分页 ES本身是支持分页查询的,使用方式跟MySQL非常类似: from: Indicates the number of initial results that should be skipped, defaults to 0 size: Indicates the number of results that should be returned, defaults to 10 如: GET /_search?size=5&from=10 但是跟MySQL不同,ES是分布式存储的,查询结果一般都是跨多个分片的(spans multiple shards),每个shard产生自己的排序结果,最后协调节点(coordi...

×