0 码力 |
36 页 |
1.66 MB
| 2 年前 3 现在写入config map,挂载到pod
## • 应用
• 一行代码kubectl apply -f deployment.yaml
• 拉取镜像、启动服务、探活、滚动更新等功能
## 微服务的启动阶段
启动参数
加载配置
探活
滚动更新
EGO 内置很多环境变量,这样可以很方便的通过基础设施将公司内部规范的一些数据预设在 K8S 环境变量内,业务方就可以简化很多启动参数,在 dockerfile |./logs|配置路径|
|ego\_trace\_id\_name|EGO\_TRACE\_ID\_NAME|x-trace-id|链路名称|
## 微服务的启动阶段
启动参数
加载配置
探活
滚动更新
软链接:filepath.EvalSymlinks(fp.path)
)
• gRPC: healthpb.RegisterHealthServer(newServer, health.NewServer())
加载配置
探活
滚动更新
httpGet:
path: /
port: 9002
scheme: HTTP
httpHeaders:
- name: X-Health-Check
- value: 1
exec 0 码力 |
41 页 |
3.20 MB
| 2 年前 3 ## 微服务体系下的混合云&同城双活实践探索
康彬 (robinkang)
乐信/架构总监
## 极客邦科技 会议推荐2019

## QCon
北京
## 全球软件开发大会
大会:5月6–8日
培训:5月9–10日 14年研发及管理经验,从0到1组建了乐信架构团队,主导并推动了乐信集团业务系统从单体应用架构向微服务架构的演变、从 php 技术栈向 java 技术栈的无缝转型,从私有云向混合云的进化,及新一代的同城双活技术架构的研发与落地工作

## 信用成长成就品质生活 f/a7df77a537ee0f8bf8c3ac0b68cdc05e/p5_1.jpg)
## TABLE OF CONTENTS 大纲
• 大促的痛及混合云实践
- 同城双活的探索之路
• 单元化&双活的应用场景
- 未来的规划
 0 码力 |
47 页 |
6.09 MB
| 2 年前 3 jpg)
设计实现
01
性能亮点
02
高级特性
03
展望未来
04
## Go net 在 RPC 场景下的问题
### 1. Conn 难以探活,维护连接池成本高

conn := active ?
conn.Write(request)
// Is conn active ?
connpool.Put(conn)
## Go net 在 RPC 场景下的问题
1. Conn 难以探活,维护连接池成本高
2. BIO 式编程,
连接量大时,调度开销大
go func() {
for {
conn, _ := listener.Accept()
handle ...
conn.Write(response)
}
}
}
## Go net 在 RPC 场景下的问题
1. Conn 难以探活,维护连接池成本高
2. BIO 式编程,
连接量大时,调度开销大
go func() {
conn, _ := listener.Accept()
epoll_ctl(conn 0 码力 |
42 页 |
3.19 MB
| 2 年前 3
1.4.6 テキストエディター ..... 23
1.4.7 デフォールトのテキストエディターの設定 ..... 23
1.4.8 Vim 利用法 ..... 24
1.4.9 シェル活動の記録 ..... 25
1.4.10 基本 Unix コマンド ..... 25
1.5 シェルプロンプト ..... 27
1.5.1 コマンド実行と環境変数 ..... 27
1 の下でのパッケージの表示
2.2.6 aptitude を使った探索方法
2.2.7 aptitude の regex 式
2.2.8 aptitude による依存関係の解決
2.2.9 パッケージ活動ログ
2.3 aptitude 操作例
2.3.1 興味あるパッケージの探索
2.3.2 regex にマッチするパッケージ名のパッケージをリスト
2.3.3 regex マッチをしての閲覧 3 ディスプレー出力 ..... 147
8.4 東アジア不明瞭文字幅文字 ..... 147
システムに関するティップ 148
9.1 コンソールのティップ 148
9.1.1 シェルの活動を綺麗に記録 148
9.1.2 screen プログラム 149
9.1.3 ディレクトリー間移動 150
9.1.4 Readline のラッパー 150
9.1.5 ソースコードツリーのスキャン 0 码力 |
287 页 |
1.60 MB
| 1 年前 3 。
### 1.1 演算法無處不在
當我們聽到“演算法”這個詞時,很自然地會想到數學。然而實際上,許多演算法並不涉及複雜數學,而是更多地依賴基本邏輯,這些邏輯在我們的日常生活中處處可見。
在正式探討演算法之前,有一個有趣的事實值得分享:你已經在不知不覺中學會了許多演算法,並習慣將它們應用到日常生活中了。下面我將舉幾個具體的例子來證實這一點。
例一:查字典。在字典裡,每個漢字都對應一個拼音,而 // 更新條件變數
i += 1
i *= 2
}
return res
}
總的來說,for 迴圈的程式碼更加緊湊,while 迴圈更加靈活,兩者都可以實現迭代結構。選擇使用哪一個應該根據特定問題的需求來決定。
### 3. 巢狀迴圈
我們可以在一個迴圈結構內巢狀另一個迴圈結構,下面以 for 迴圈為例:
/// == File: iteration 面,處理代理對需要額外增加程式碼,這提高了程式設計的複雜性和除錯難度。
出於以上原因,部分程式語言提出了一些不同的編碼方案。
Python 中的 str 使用 Unicode 编码,並採用一種靈活的字串表示,儲存的字元長度取決於字串中最大的 Unicode 碼點。若字串中全部是 ASCII 字元,則每個字元佔用 1 位元組;如果有字元超出了 ASCII 範圍,但全部在基本多語言平面(BMP)內,則每個字元佔用 0 码力 |
379 页 |
18.79 MB
| 1 年前 3 。
### 1.1 演算法無處不在
當我們聽到“演算法”這個詞時,很自然地會想到數學。然而實際上,許多演算法並不涉及複雜數學,而是更多地依賴基本邏輯,這些邏輯在我們的日常生活中處處可見。
在正式探討演算法之前,有一個有趣的事實值得分享:你已經在不知不覺中學會了許多演算法,並習慣將它們應用到日常生活中了。下面我將舉幾個具體的例子來證實這一點。
例一:查字典。在字典裡,每個漢字都對應一個拼音,而 // 更新條件變數
i++;
i *= 2;
}
return res;
}
總的來說,for 迴圈的程式碼更加緊湊,while 迴圈更加靈活,兩者都可以實現迭代結構。選擇使用哪一個應該根據特定問題的需求來決定。
### 3. 巢狀迴圈
我們可以在一個迴圈結構內巢狀另一個迴圈結構,下面以 for 迴圈為例:
// === File: iteration 面,處理代理對需要額外增加程式碼,這提高了程式設計的複雜性和除錯難度。
出於以上原因,部分程式語言提出了一些不同的編碼方案。
Python 中的 str 使用 Unicode 编码,並採用一種靈活的字串表示,儲存的字元長度取決於字串中最大的 Unicode 碼點。若字串中全部是 ASCII 字元,則每個字元佔用 1 位元組;如果有字元超出了 ASCII 範圍,但全部在基本多語言平面(BMP)內,則每個字元佔用 0 码力 |
379 页 |
18.78 MB
| 1 年前 3 。
### 1.1 演算法無處不在
當我們聽到“演算法”這個詞時,很自然地會想到數學。然而實際上,許多演算法並不涉及複雜數學,而是更多地依賴基本邏輯,這些邏輯在我們的日常生活中處處可見。
在正式探討演算法之前,有一個有趣的事實值得分享:你已經在不知不覺中學會了許多演算法,並習慣將它們應用到日常生活中了。下面我將舉幾個具體的例子來證實這一點。
例一:查字典。在字典裡,每個漢字都對應一個拼音,而 # 更新条件整数
i += 1
i *= 2
end
res
end
總的來說,for 迴圈的程式碼更加緊湊,while 迴圈更加靈活,兩者都可以實現迭代結構。選擇使用哪一個應該根據特定問題的需求來決定。
### 3. 巢狀迴圈
我們可以在一個迴圈結構內巢狀另一個迴圈結構,下面以 for 迴圈為例:
# === File: iteration 面,處理代理對需要額外增加程式碼,這提高了程式設計的複雜性和除錯難度。
出於以上原因,部分程式語言提出了一些不同的編碼方案。
Python 中的 str 使用 Unicode 编码,並採用一種靈活的字串表示,儲存的字元長度取決於字串中最大的 Unicode 碼點。若字串中全部是 ASCII 字元,則每個字元佔用 1 位元組;如果有字元超出了 ASCII 範圍,但全部在基本多語言平面(BMP)內,則每個字元佔用 0 码力 |
372 页 |
18.75 MB
| 1 年前 3 。
### 1.1 演算法無處不在
當我們聽到“演算法”這個詞時,很自然地會想到數學。然而實際上,許多演算法並不涉及複雜數學,而是更多地依賴基本邏輯,這些邏輯在我們的日常生活中處處可見。
在正式探討演算法之前,有一個有趣的事實值得分享:你已經在不知不覺中學會了許多演算法,並習慣將它們應用到日常生活中了。下面我將舉幾個具體的例子來證實這一點。
例一:查字典。在字典裡,每個漢字都對應一個拼音,而 // 更新条件整数
i++;
i *= 2;
}
return res;
}
總的來說,for 迴圈的程式碼更加緊湊,while 迴圈更加靈活,兩者都可以實現迭代結構。選擇使用哪一個應該根據特定問題的需求來決定。
### 3. 巢狀迴圈
我們可以在一個迴圈結構內巢狀另一個迴圈結構,下面以 for 迴圈為例:
// === File: iteration 面,處理代理對需要額外增加程式碼,這提高了程式設計的複雜性和除錯難度。
出於以上原因,部分程式語言提出了一些不同的編碼方案。
Python 中的 str 使用 Unicode 编码,並採用一種靈活的字串表示,儲存的字元長度取決於字串中最大的 Unicode 碼點。若字串中全部是 ASCII 字元,則每個字元佔用 1 位元組;如果有字元超出了 ASCII 範圍,但全部在基本多語言平面(BMP)內,則每個字元佔用 0 码力 |
378 页 |
18.77 MB
| 1 年前 3 。
### 1.1 演算法無處不在
當我們聽到“演算法”這個詞時,很自然地會想到數學。然而實際上,許多演算法並不涉及複雜數學,而是更多地依賴基本邏輯,這些邏輯在我們的日常生活中處處可見。
在正式探討演算法之前,有一個有趣的事實值得分享:你已經在不知不覺中學會了許多演算法,並習慣將它們應用到日常生活中了。下面我將舉幾個具體的例子來證實這一點。
例一:查字典。在字典裡,每個漢字都對應一個拼音,而 i;
// 更新條件變數
i += 1;
i *= 2;
}
res
}
總的來說,for 迴圈的程式碼更加緊湊,while 迴圈更加靈活,兩者都可以實現迭代結構。選擇使用哪一個應該根據特定問題的需求來決定。
### 3. 巢狀迴圈
我們可以在一個迴圈結構內巢狀另一個迴圈結構,下面以 for 迴圈為例:
/// == File: iteration 面,處理代理對需要額外增加程式碼,這提高了程式設計的複雜性和除錯難度。
出於以上原因,部分程式語言提出了一些不同的編碼方案。
Python 中的 str 使用 Unicode 編碼,並採用一種靈活的字串表示,儲存的字元長度取決於字串中最大的 Unicode 碼點。若字串中全部是 ASCII 字元,則每個字元佔用 1 位元組;如果有字元超出了 ASCII 範圍,但全部在基本多語言平面(BMP)內,則每個字元佔用 0 码力 |
388 页 |
18.82 MB
| 1 年前 3
|