Skip to content

Commit

Permalink
add
Browse files Browse the repository at this point in the history
  • Loading branch information
aalansehaiyang committed May 7, 2017
1 parent ec84b99 commit 7494801
Show file tree
Hide file tree
Showing 9 changed files with 115 additions and 32 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,6 @@
* [项目生命周期](project-management/项目生命周期.md)
* [程序员素养](project-management/程序员素养.md)


### 运维

* [快速排查线上问题](ops/online-question.md)
Expand All @@ -137,6 +136,7 @@

### 其它

* [个人成长、职业规划](other/person.md)
* [读书单](other/book.md)
* [HTTPS 抓包工具(charles)](http://blog.vetcafe.net/2013/12/charlesproxyiphonehttps.html)
* [一致性hash算法](other/一致性hash.md)
Expand Down
4 changes: 2 additions & 2 deletions middle-software/Hbase.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

---

#### 附录:
### 附录:

[Hbase安装](http://blog.csdn.net/itomge/article/details/9970833)
* [Hbase安装](http://blog.csdn.net/itomge/article/details/9970833)

-----

Expand Down
27 changes: 14 additions & 13 deletions middle-software/zookeeper.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

---

**简介:**
#### 简介

zk为分布式应用提供了高效且可靠的分布式协调服务。用于解决数据同步、数据发布/订阅、集群管理、配置管理、分布式锁、命名服务、负载均衡等问题。最早由雅虎创建,具有以下特性:

Expand Down Expand Up @@ -34,7 +34,7 @@ zk支持单机、集群两种模式。
* Curator


#### ZkClient 简介
#### ZkClient 介绍

ZkClient是github上一个开源的ZK客户端,在zookeeper原生API接口之上进行了包装,是一个更易用的ZK客户端。实现了如session超时重连、Watcher反复注册等功能,使得zookeeper客户端的繁琐细节工作对开发人员透明。

Expand Down Expand Up @@ -71,9 +71,9 @@ pom依赖
</dependency>
```

####代码示例:
#### 代码示例:

#####1.建立客户端连接
##### 1.建立客户端连接

```
/**
Expand Down Expand Up @@ -101,7 +101,7 @@ ZkClient 构造方法参数说明:
|zkConnection|IZkConnection接口实现类,包含了增、删、改、查等一系列方法|


#####2.创建节点
##### 2.创建节点

![image](img/3.png)

Expand All @@ -117,7 +117,7 @@ ZkClient 构造方法参数说明:
zkClient.createPersistent("/root/provier", true);
```

#####3.删除节点
##### 3.删除节点

![image](img/4.png)

Expand All @@ -130,7 +130,7 @@ zkClient.createPersistent("/root/provier", true);
zkClient.deleteRecursive("/root/provier");
```

#####4.读取数据
##### 4.读取数据

* getChildren

Expand Down Expand Up @@ -193,7 +193,7 @@ zkClient.subscribeDataChanges("/root", new IZkDataListener() {
```


#####5.更新数据
##### 5.更新数据

![image](img/6.png)

Expand All @@ -203,14 +203,15 @@ zkClient.subscribeDataChanges("/root", new IZkDataListener() {
|object|数据内容,可以是null|
|expectedVersion|预期的数据版本,实现类似CAS的原子操作|

#####6.检测节点是否存在
##### 6.检测节点是否存在

```
boolean isNodeExist = zkClient.exists("/root");
```

**参考资料:**
#### 资料

https://github.com/apache/zookeeper

https://github.com/llohellohe/zookeeper
* https://github.com/apache/zookeeper
* https://github.com/llohellohe/zookeeper
* [zookeeper 入门系列 : 概述](http://mp.weixin.qq.com/s/pTXUAMgGpafhNNWfW2R_Cw)
* [paxos 协议](http://mp.weixin.qq.com/s/a17RBmGABt8j_mmxgBN94w)
22 changes: 21 additions & 1 deletion open-source-framework/redis.md
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,27 @@ Redis lists基于Linked Lists实现。这意味着即使在一个list中有数
对哈希中的某个key对应的值增加计数,线程安全。<br>
如果field不存在,初始值为0<br>


### lua 脚本

如果一次业务请求需要执行多条命令,可以借助lua脚本批量提交执行

```
// key:缓存键值; seconds:过期时间
public static String luaScript(String key, long seconds) {
return "local currIncr = redis.call('INCR', '" + key + "') "
+ "if tonumber(currIncr) == 1 "
+ "then "
+ "redis.call('EXPIRE', '" + key + "', " + seconds + ") "
+ "end "
+ "return currIncr";
}
//寻找目标节点
Node target = redisClient.getNodeByKey(key);
//执行lua脚本命令
Long count = (Long) redisClient.eval(target, luaScript方法返回的字符串命令);
```

### 参考资料

Expand Down
Binary file added other/.person.md.swp
Binary file not shown.
13 changes: 13 additions & 0 deletions other/person.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@

---

### 快速成长

* [8年开发经验,网易Java开发工程师的成长感悟](http://mp.weixin.qq.com/s/Ck71qeyACk0Zn5j3ro87YQ)
* [张一鸣:我遇到的优秀年轻人的5个特质](http://mp.weixin.qq.com/s/SayDuFnWFIRaKgVfd3Km7g)


### 转型

* [从纯技术到技术管理,那些跌宕起伏的转型经历](http://mp.weixin.qq.com/s/FWrhT2jl1TUq80d8gNinww)
* [从普通程序员到三百人团队CTO,技术人成长的易与不易](http://mp.weixin.qq.com/s/tyTrBg9vk5Ft16oWEb4-bA)
6 changes: 6 additions & 0 deletions project-management/程序员素养.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

---

#### 附录

* [论架构师的自我修养](http://mp.weixin.qq.com/s/tc3hWHPw2JvqdnhXnWEGbQ)

---

在日常工作中肯定会遇到各种棘手问题,需要我们去查资料、认真思考,不断充实自己,提高自己。象大地之神盖亚的儿子——乌拉诺斯,每次跌倒都能站起来,并且拥有比之前更大的能量。


Expand Down
2 changes: 1 addition & 1 deletion system-architecture/架构师的职责与思考.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
#### 架构师的职责
<font color=red>架构师的职责应该是立足于技术和业务之间的中间角色或者平衡点</font>, 在针对业务深刻理解的基础上,针对业务中存在诸多变数,挑选适合的技术架构和技术方案;结合现有的技术团队的水平与特点,选择合适的技术栈进行落地和实现。

架构师在做每一个决定之时都会受到诸多的因素的限制,比如高效的技术栈需要很高的学习曲线,在工期与人员素质之间需要权衡。精妙的技术架构并不能解决业务的快速迭代和变化,技术架构都是后知后觉的,无法准确的预知业务层面的变更与方向,故只能是跟随的角色,这样就必然会面临技术架构迭代和升级的需求,技术架构从来都不是建立了之后,就无需修改,可以承载各方的多重期望;事实上恰恰相反,<font color=red>技术架构是需要与时俱进的,是不断迭代和升级出来,根据不断变更的需求和团队情况来动态调整的。</font>
架构师在做每一个决定之时都会受到诸多的因素的限制,比如高效的技术栈需要很高的学习曲线,在工期与人员素质之间需要权衡。精妙的技术架构并不能解决业务的快速迭代和变化,技术架构都是后知后觉的,无法准确的预知业务层面的变更与方向,故只能是跟随的角色,这样就必然会面临技术架构迭代和升级的需求,技术架构从来都不是建立了之后,就无需修改,可以承载各方的多重期望;事实上恰恰相反,<font color=red>技术架构是需要与时俱进的,是不断迭代和升级出来,根据不断变化的业务需求和团队情况来动态调整的。</font>

#### 架构师的应变与坚持

Expand Down
71 changes: 57 additions & 14 deletions system-architecture/经典案例.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,49 +2,92 @@

---


##### 电商

* 淘宝
* [淘宝网系统架构分享](http://mp.weixin.qq.com/s/WkBavHJyfCQCo_P1Vmm03A)
* [阿里巴巴系统架构](http://mp.weixin.qq.com/s/kbAwChFavgfhyUZLEXea2w)
* [淘宝双11高可用架构演进之路](http://mp.weixin.qq.com/s/1BJ5SA0q4mkjxiLt0Sbq_w)
* [历经8年双11流量洗礼,淘宝开放平台如何攻克技术难关?](http://mp.weixin.qq.com/s/m6rlPeB46JbF3Dl49FE1xQ)
* [从淘宝到云端的高可用架构演进](http://mp.weixin.qq.com/s/_n1zSJ0uv9gNctXD9tyGsg)
* 1号店
* [1号店大型电商微服务实践](http://mp.weixin.qq.com/s/_2Rw-4h4F4843c89tz-Z2Q)
* [1号店交易系统架构如何向「高并发高可用」演进](http://mp.weixin.qq.com/s/lzRZNWMx2KxeIyKXggl58w)
* [有赞的交易系统架构困局以及破局之道](http://mp.weixin.qq.com/s/XLWq01U0mOWpGEmXeri2TQ)
* [秒杀小结](案例-秒杀小结.md)
* [订单系统分库分表实践](http://mp.weixin.qq.com/s/kauO45XNQaV40hxmSc3BpA)
* [盘点电商大战背后的技术力量支撑](http://mp.weixin.qq.com/s/01rmXXkEz-cQaLBe7eGeQA)
* [乐视电商云的整体架构与技术实现](http://mp.weixin.qq.com/s/gbVMGGneiSD7mhXtTH6QOg)

##### 支付

* [支付宝钱包系统架构内部剖析](http://mp.weixin.qq.com/s/wVjmK4Qh8LJIJ23toXdB6g)
* [余额宝技术架构及演进](http://mp.weixin.qq.com/s/D3MAYfr4BpX8dONUfJ7LhQ)
* [支付系统整体架构](http://mp.weixin.qq.com/s/LjxMFyG4K4301bNoH74ZWA)
* [去哪儿网支付系统架构演进全历程](http://mp.weixin.qq.com/s/9V1VC2Fe9HdGzdvQ2A7wiA)

##### 物流

* [京东物流系统架构演进中的最佳实践](http://mp.weixin.qq.com/s/2HVkQCaXQQEQIqTrJZ01wA)


##### 秒杀、抽奖

* [秒杀小结](案例-秒杀小结.md)
* [秒杀系统架构分析与实战](http://mp.weixin.qq.com/s/1BnygFm6ukEZcpakyEi9-Q)
* [秒杀系统的架构解决之道](http://mp.weixin.qq.com/s/58y6YE2tQnQCugNJu9xOGA)
* [1号店的抽奖系统架构实践](http://mp.weixin.qq.com/s/0vkLqt-zwXLAJTe6GBPlaw)
* [微信红包系统架构的设计和优化分享](http://mp.weixin.qq.com/s/oQN31DA6VZiurNOX2yxI-w)

##### 社区
##### 社区、社交互动

* [微博推荐架构的演进](http://mp.weixin.qq.com/s/wi3XqgEn7iCKhVhXAwlyJg)
* [新浪微博技术架构分析](http://mp.weixin.qq.com/s/JI3xmM0eYjfJpObOcUSnPA)
* [新浪微博与理财社区cache对比分析](案例-微博与理财社区cache分析.md)
* [闲鱼社区技术架构演进](http://mp.weixin.qq.com/s/r_4SahpX9nAKf9OsPFQMQg)
* [公众号增量消息同步改造](案例-公众号增量消息同步改造.md)
* [社区稳定性之降级](社区稳定性之降级.md)
* [社区计数器](案例-计数器.md)
* [回复的楼层号如何控制并发?](案例-贴子楼层号.md)

##### 支付
##### 金融

* [支付系统整体架构](http://mp.weixin.qq.com/s/LjxMFyG4K4301bNoH74ZWA)
* [区块链技术与微服务架构之间有什么关系](http://mp.weixin.qq.com/s/9aFoptoI88n7hgZtxOe4Aw)
* [200 行代码实现一个简单的区块链](http://mp.weixin.qq.com/s/cqi6mNVh2ZFZdNFIAQynjw)


##### 大数据

* [微博广告架构解密](http://mp.weixin.qq.com/s/sNHi05PTh4goOUMh68wr6g)
* [小米品牌广告引擎与算法实践](http://mp.weixin.qq.com/s/VjRWHEKqursOg6ekzBMsBw)


##### 直播

* [淘宝直播在双11的互动实践](http://mp.weixin.qq.com/s/WcHvukClRSLA4KczRjDVaw)
* [常见的几种直播连麦方案](http://mp.weixin.qq.com/s/Ej4QHRvF7e0i5d78hETrwg)
* [如何开发10万在线级别的直播弹幕技术?](http://mp.weixin.qq.com/s/U4SKJbXSkd6JOx0R7yK-5g)

##### 移动端相关

* [蘑菇街移动端混合开发体系的研发与实践](http://mp.weixin.qq.com/s/mMMsuCMX27T1-ynVeJntUw)
* [人人车Android客户端架构演进实录](http://mp.weixin.qq.com/s/h9UNSqnKjzFnXY2gMNAQ-g)

##### 搜索

* [去哪儿网机票搜索系统的高并发架构设计](http://mp.weixin.qq.com/s/HErVN8x-s6MzgW-3XMvvAA)


##### 缓存相关

* [携程开源其Redis多数据中心解决方案XPipe](http://mp.weixin.qq.com/s/YhrJprLWjoZa2tU3qY8XZw)


##### 金融
##### 其它

* [区块链技术与微服务架构之间有什么关系](http://mp.weixin.qq.com/s/9aFoptoI88n7hgZtxOe4Aw)
* [200 行代码实现一个简单的区块链](http://mp.weixin.qq.com/s/cqi6mNVh2ZFZdNFIAQynjw)
* [网易美学平滑微服务化](http://mp.weixin.qq.com/s/4TmpzJEdiSzi5fLTLXAq2w)
* [微服务架构如何实现网站服务垂直化拆分](http://mp.weixin.qq.com/s/muoJas1nayP6gY8KBwVLSw)


##### 大数据

* [微博广告架构解密](http://mp.weixin.qq.com/s/sNHi05PTh4goOUMh68wr6g)
* [小米品牌广告引擎与算法实践](http://mp.weixin.qq.com/s/VjRWHEKqursOg6ekzBMsBw)

##### 其它

* [网易美学平滑微服务化](http://mp.weixin.qq.com/s/4TmpzJEdiSzi5fLTLXAq2w)

0 comments on commit 7494801

Please sign in to comment.