�gӭ���R�ЈD�W(w��ng) Ո(q��ng) | ע��(c��)
> >>
ܛ���ܘ�(g��u)�O(sh��)Ӌ(j��):���;W(w��ng)վ���g(sh��)�ܘ�(g��u)�c�I(y��)��(w��)�ܘ�(g��u)�ں�֮��

���] ܛ���ܘ�(g��u)�O(sh��)Ӌ(j��):���;W(w��ng)վ���g(sh��)�ܘ�(g��u)�c�I(y��)��(w��)�ܘ�(g��u)�ں�֮��

���ߣ��ഺ��
�����磺��ӹ��I(y��)����������r(sh��)�g��2019-01-01
�_(k��i)���� ���� �(y��)��(sh��)�� 256
�� �D �r(ji��):¥46.0(5.8��) ���r(ji��)  ¥79.0 ��䛺�ɿ�����(hu��)�T�r(ji��)
����ُ(g��u)��܇(ch��) �ղ�
�_(k��i)���٣� ȫ��(ch��ng)���]
?�½������س���
���(l��i)���Ǖ�(sh��)����>

ܛ���ܘ�(g��u)�O(sh��)Ӌ(j��):���;W(w��ng)վ���g(sh��)�ܘ�(g��u)�c�I(y��)��(w��)�ܘ�(g��u)�ں�֮�� ���(qu��n)��Ϣ

ܛ���ܘ�(g��u)�O(sh��)Ӌ(j��):���;W(w��ng)վ���g(sh��)�ܘ�(g��u)�c�I(y��)��(w��)�ܘ�(g��u)�ں�֮�� ����(sh��)��ɫ

���ػ�“(li��n)�W(w��ng)�߲��l(f��)���߿������ɔU(ku��)չ�ܘ�(g��u)���ļ��g(sh��) ����Ӌ(j��)��C(j��)���������g(sh��)�ܘ�(g��u)���I(y��)��(w��)�ܘ�(g��u)��š�I(y��)�l(f��)չ�Ĵ�S��������ϵ�y(t��ng)�ļܘ�(g��u)�O(sh��)Ӌ(j��)����Փ ԏጼ��g(sh��)�ܘ�(g��u)�c�I(y��)��(w��)�ܘ�(g��u)���ںϷ��� ܛ���ܘ�(g��u)�O(sh��)Ӌ(j��)�ı��|(zh��)���nj�(du��)��(w��n)�}����g����(f��)�\(y��n)�����[���������w�{�ȷ������M(j��n)���ҵ��m�Ϯ�(d��ng)ǰ�A�ε��O(sh��)Ӌ(j��)�������^(gu��)�̡���Ҫ���]ܛ���S�I(y��)��(w��)�l(f��)չ�ęM�v��U(ku��)չ����ҲҪ���]ܛ�������Ŀ����ԡ���(w��n)���ԺͿɾS�o(h��)�Եȼ��g(sh��)����������(sh��)���߽Y(ji��)������������ܘ�(g��u)�O(sh��)Ӌ(j��)��(sh��)�`��(j��ng)�(y��n)�Ͷ���(g��)�I(y��)�罛(j��ng)�䰸���������x�����������Y(ji��)���S����(sh��)�õ�ܛ���ܘ�(g��u)�O(sh��)Ӌ(j��)˼·���Լ�ܛ���O(sh��)Ӌ(j��)�^(gu��)���н�(j��ng)�������ġ������g(sh��)��̓����(sh��)���� ���������ɣ�����̫�(y��ng)�� ����Ͱ͸߼�(j��)���g(sh��)��(zhu��n)�� ��ͬ��һЩ��Ƥ��(sh��)�����g(sh��)Ҏ(gu��)�����(gu��)�������g��������(sh��)�ļ��g(sh��)���l(f��)��������(n��i)�ݾ������s���ļ��g(sh��)���׵��I(y��)��(w��)��(ch��ng)���������؄e��̎̎�Y(ji��)������������������V���x��չʾ����ν���һ�N���wϵ��˼�S��ʽ�͌W(xu��)��(x��)������׌����Փ���ٻޝ��y�����o(w��)Փ����������ij���T��߀�ǹ����˾�������������@����(sh��)����(hu��)���ի@���й��Q�� �������G܊ ij���ڿƼ���˾���g(sh��)���O(ji��n) �ܘ�(g��u)��������ܛ���ИI(y��)����Ĵ��a�����ԿɷQ(ch��ng)֮��Ȼ�����Ļ���ԭ�����׌��㷨���ٵ����g��(y��ng)�����ό�ģ�K�ܘ�(g��u)������������һ�ӵĘI(y��)��(w��)�I(l��ng)��ģ���ܱM��(sh��)�I(l��ng)���߲���Ҋ(ji��n)�����I(l��ng)�����܌�(sh��)��(zh��n)���Y(ji��)���������ܿ��Y(ji��)����ѭ��u�M(j��n)�渵���(l��i)���������Pë��ǡ����ߌ�ʮ�깤����(j��ng)�(y��n)?z��i)����ڱ��?sh��)�� ���x���܉�(x��)��(x��)���x���м�(x��)�I(l��ng)��(hu��)�����ܽY(ji��)������I(y��)��(w��)���I(l��ng)�򣬌W(xu��)һ����(sh��)�`�����،����������� �����T��(gu��)�� �vӍ�߼�(j��)���̎�

ܛ���ܘ�(g��u)�O(sh��)Ӌ(j��):���;W(w��ng)վ���g(sh��)�ܘ�(g��u)�c�I(y��)��(w��)�ܘ�(g��u)�ں�֮�� ��(n��i)�ݺ�(ji��n)��

����(sh��)ϵ�y(t��ng)����������ܛ���ܘ�(g��u)�ķ���Փ�c��(sh��)�`��ͨ�^(gu��)����(sh��)���x�߿��Ԍ�(du��)�I(y��)��(w��)ܛ���ļܘ�(g��u)�����W(xu��)��һ��(g��)ȫ�ֵ��J(r��n)�R(sh��)��ͬ�r(sh��)��(du��)ܛ���ܘ�(g��u)��Ҫ�ĺ�����������̵���������(du��)��(g��)�˵ļ��g(sh��)���L(zh��ng)֮·��һ�����b����������(sh��)��(n��i)�ݰ�����Ҏ(gu��)ģ�ֲ�ʽ�ܘ�(g��u)�漰���Z(y��)������������g���ȃ�(n��i)����ͬ�r(sh��)����(sh��)������ij�N���w���Z(y��)�Կ�܁�(l��i)���Y(ji��)�����ܘ�(g��u)�ĺ���˼�S���@�N˼�S�m�������κ�һ�N�Z(y��)�Կ�ܽ�Q�κ�һ�N�I(y��)��(w��)��(w��n)�}��

ܛ���ܘ�(g��u)�O(sh��)Ӌ(j��):���;W(w��ng)վ���g(sh��)�ܘ�(g��u)�c�I(y��)��(w��)�ܘ�(g��u)�ں�֮�� Ŀ�

��1���� ʲô�Ǽܘ�(g��u)
��1�� �廨���T(m��n)�ļܘ�(g��u)��š�I(y��) 2
1.1 �ܘ�(g��u)��š�I(y��)���(l��i) 2
1.2 �ܘ�(g��u)�ķ��(l��i) 2

��2�� �ܘ�(g��u)�ĵ��c�g(sh��) 5
2.1 ��������g(sh��) 5
2.2 ���c�g(sh��)���q�C�P(gu��n)ϵ 6
��2���� Ӌ(j��)��C(j��)����

��3�� �Z(y��)�� 10
3.1 �ӳ����F�ľ����Z(y��)�� 10
3.2 ��ͨһ�T(m��n)�Z(y��)�� 10

��4�� ����ϵ�y(t��ng) 12
4.1 ���_I/O��ֱ��I/O 12
4.2 ��(n��i)��ӳ���ļ��c�㿽ؐ 14
4.2.1 ��(n��i)��ӳ���ļ� 14
4.2.2 �㿽ؐ 15
4.3 �W(w��ng)�j(lu��)I/Oģ�� 17
4.3.1 ��(sh��)�F(xi��n)����ľW(w��ng)�j(lu��)I/Oģ�� 17
4.3.2 Reactorģʽ�cPreactorģʽ 20
4.3.3 select��epoll��LT�cET 20
4.3.4 ����(w��)�����̵�1+N+Mģ�� 22
4.4 �M(j��n)�������̺ͅf(xi��)�� 24
4.5 �o(w��)�i����(n��i)�������cCAS�� 27
4.5.1 ��(n��i)������ 27
4.5.2 CAS 30

��5�� �W(w��ng)�j(lu��) 31
5.1 HTTP 1.0 31
5.1.1 HTTP 1.0��(w��n)�} 31
5.1.2 Keep-Alive�C(j��)���cContent-Length���� 31
5.2 HTTP 1.1 32
5.2.1 �B�ӏ�(f��)���cChunk�C(j��)�� 32
5.2.2 Pipeline�cHead-of-line Blocking��(w��n)�} 33
5.2.3 HTTP/2���F(xi��n)֮ǰ�������������� 34
5.2.4 ��һ��(l��i)��ء���(w��n)�} 35
5.2.5 ���c(di��n)�m(x��)�� 36
5.3 HTTP/2 36
5.3.1 �cHTTP 1.1�ļ��� 37
5.3.2 ���M(j��n)�Ʒ֎� 37
5.3.3 �^�����s 39
5.4 SSL/TLS 39
5.4.1 ���� 39
5.4.2 ��(du��)�Q(ch��ng)���ܵĆ�(w��n)�} 40
5.4.3 �p��nj�(du��)�Q(ch��ng)���� 41
5.4.4 ����nj�(du��)�Q(ch��ng)���� 42
5.4.5 ���g�˹��� 43
5.4.6 ��(sh��)���C��(sh��)�c�C��(sh��)�J(r��n)�C���� 44
5.4.7 ���C��(sh��)�cCA����� 45
5.4.8 SSL/TLS�f(xi��)�h���Ĵ����� 47
5.5 HTTPS 48
5.6 TCP/UDP 49
5.6.1 �ɿ��c���ɿ� 49
5.6.2 TCP�ġ��١��B�ӣ���B(t��i)�C(j��)�� 51
5.6.3 �������֣��W(w��ng)�j(lu��)2��܊��(w��n)�}�� 53
5.6.4 �ĴΓ]�� 54
5.7 QUIC 56
5.7.1 ���G����Raid5�㷨��Raid6�㷨�� 57
5.7.2 ���ٵ�RTT 58
5.7.3 �B���w�� 58

��6�� ��(sh��)��(j��)��(k��) 59
6.1 ��ʽ�c����ʽ 59
6.2 �֎�(k��)�ֱ� 59
6.2.1 ��ʲôҪ�� 60
6.2.2 �ֲ�ʽID���ɷ���(w��) 60
6.2.3 ��־S�ȵ��x�� 60
6.2.4 Join��ԃ(x��n)��(w��n)�} 61
6.2.5 �ֲ�ʽ�„�(w��) 61
6.3 B+��(sh��) 62
6.3.1 B+��(sh��)߉݋�Y(ji��)��(g��u) 62
6.3.2 B+��(sh��)�����Y(ji��)��(g��u) 63
6.3.3 �����I���� 65
6.4 �„�(w��)�c�i 66
6.4.1 �„�(w��)���Ă�(g��)���x��(j��)�e 66
6.4.2 ���^�i�͘�(l��)�^�i 67
6.4.3 ���i�z�y(c��) 71
6.5 �„�(w��)��(sh��)�F(xi��n)ԭ��֮1��Redo Log 72
6.5.1 Write-Ahead 73
6.5.2 Redo Log��߉݋�c�����Y(ji��)��(g��u) 74
6.5.3 Physiological Logging 75
6.5.4 I/O��(xi��)���ԭ���ԣ�Double Write�� 76
6.5.5 Redo Log Block�Y(ji��)��(g��u) 77
6.5.6 �„�(w��)��LSN�cLog Block���P(gu��n)ϵ 78
6.5.7 �„�(w��)Rollback�c�����֏�(f��)��ARIES�㷨�� 80
6.6 �„�(w��)��(sh��)�F(xi��n)ԭ��֮2��Undo Log 86
6.6.1 Undo Log�Ƿ�һ����Ҫ 86
6.6.2 Undo Log��MVCC�� 88
6.6.3 Undo Log����Log 89
6.6.4 Undo Log�cRedo Log���P(gu��n)“(li��n) 90
6.6.4 ���N�i 91
6.7 Binlog�c���ď�(f��)�� 94
6.7.1 Binlog�cRedo Log����Ҫ� 94
6.7.2 ��(n��i)��XA �C Binlog�cRedo Logһ���Ԇ�(w��n)�} 95
6.7.3 ���N���ď�(f��)�Ʒ�ʽ 96
6.7.3 ���Џ�(f��)�� 97
��7�� �����ܛ���c���g�� 99
7.1 ��(du��)���B(t��i)�wϵ���J(r��n)֪ 99
7.2 ��� 99
7.3 ܛ���c���g�� 100

��3���� ���g(sh��)�ܘ�(g��u)֮��
��8�� �߲��l(f��)��(w��n)�} 104
8.1 ��(w��n)�}���(l��i) 104
8.1.1 ��(c��)���ڡ��߲��l(f��)�x����ϵ�y(t��ng) 104
8.1.2 ��(c��)���ڡ��߲��l(f��)��(xi��)����ϵ�y(t��ng) 105
8.1.3 ͬ�r(sh��)��(c��)���ڡ��߲��l(f��)�x���͡��߲��l(f��)��(xi��)����ϵ�y(t��ng) 106
8.2 �߲��l(f��)�x 108
8.2.1 ����1���Ӿ��� 108
8.2.2 ����2�����l(f��)�x 109
8.2.3 ����3���،�(xi��)�p�x 110
8.2.4 ���Y(ji��)���x��(xi��)���x��CQRS�ܘ�(g��u)�� 113
8.3 �߲��l(f��)��(xi��) 114
8.3.1 ����1����(sh��)��(j��)��Ƭ 114
8.3.2 ����2���΄�(w��)��Ƭ 115
8.3.3 ����3�������� 117
8.3.4 ����4������ 123
8.3.5 ����5�����л�+���M(j��n)�̆ξ���+����I/O 124
8.4 ����Ҏ(gu��)�� 125
8.4.1 ��������푑�(y��ng)�r(sh��)�g�c���l(f��)��(sh��) 125
8.4.2 �����y(c��)ԇ�c�����u(p��ng)�� 127

��9�� �߿����c��(w��n)���� 129
9.1 �ั�� 129
9.2 ���x���������۔�ͽ���(j��) 130
9.3 �ҶȰl(f��)���c�؝L 135
9.4 �O(ji��n)���wϵ�c��־��(b��o)�� 136

��10�� �„�(w��)һ���� 138
10.1 �S̎��Ҋ(ji��n)�ķֲ�ʽ�„�(w��)��(w��n)�} 138
10.2 �ֲ�ʽ�„�(w��)��Q�����R�� 139
10.2.1 2PC 139
10.2.2 *�Kһ���ԣ���Ϣ���g���� 141
10.2.3 TCC 145
10.2.4 �„�(w��)��B(t��i)��+�{(di��o)�÷���ԇ+���շ���� 147
10.2.5 ��(du��)�~ 148
10.2.6 �ׅf(xi��)��������һ����+���ڠ�B(t��i)���a(b��)�� 149
10.2.7 �ׅf(xi��)��������ԇ+�؝L+��(b��o)��+�˹��ޏ�(f��) 151
10.2.8 ���Y(ji��) 152

��11�� �ั��һ���� 153
11.1 �߿����ҏ�(qi��ng)һ���Ե����ж��y 153
11.1.1 Kafka����Ϣ�Gʧ��(w��n)�} 153
11.1.2 Kafka��Ϣ�e(cu��)�y��(w��n)�} 156
11.2 Paxos�㷨���� 158
11.2.1 Paxos��Qʲô��(w��n)�} 158
11.2.2 ��(f��)�Ơ�B(t��i)�C(j��) 161
11.2.3 һ��(g��)���ض���̵�˼�� 163
11.2.4 Basic Paxos�㷨 164
11.2.5 Multi Paxos�㷨 167
11.3 Raft�㷨���� 169
11.3.1 �顰�������ԡ����O(sh��)Ӌ(j��) 169
11.3.2 ���c(di��n)��(xi��)�� 170
11.3.3 ��־�Y(ji��)��(g��u) 171
11.3.4 �A��1��Leader�x�e 174
11.3.5 �A��2����־��(f��)�� 176
11.3.6 �A��3���֏�(f��)�A�� 177
11.3.7 ��ȫ�Ա��C 177
11.4 Zab�㷨���� 180
11.4.1 Replicated State Machine vs. Primary-Backup System 180
11.4.2 zxid 182
11.4.3 ���򡱣��y���ύ vs. ����ύ 182
11.4.4 Leader�x�e��FLE�㷨 184
11.4.5 �����A�Σ�2�A���ύ 186
11.4.6 �֏�(f��)�A�� 186
11.5 ���N�㷨��(du��)�� 187

��12�� CAP��Փ 189
12.1 CAP��Փ���`�� 189
12.2 �F(xi��n)��(sh��)���粻���ڡ���(qi��ng)һ���ԡ���PACELC��Փ�� 190
12.3 ���Ͱ������ֲ�ʽ�i 192

��4���� �I(y��)��(w��)�ܘ�(g��u)֮��
��13�� �I(y��)��(w��)���R(sh��) 196
13.1 �a(ch��n)Ʒ��(j��ng)��vs.��������� 196
13.2 ʲô����һ��(g��)���I(y��)��(w��)�� 198
13.3 ���I(y��)��(w��)�ܘ�(g��u)�����p�غ��x 199
13.4 ���I(y��)��(w��)�ܘ�(g��u)���c�����g(sh��)�ܘ�(g��u)���ą^(q��)�� 200

��14�� �I(y��)��(w��)�ܘ�(g��u)˼�S 202
14.1 ���Ρ��֌� 202
14.2 ߅��˼�S 204
14.3 ϵ�y(t��ng)��˼�S 205
14.4 �������P(gu��n)�߷��� 206
14.5 �ǹ���������������ԽK��ʼ�� 208
14.6 ҕ�ǣ��M���ɎX��(c��)�ɷ壩 209
14.7 ���� 210
14.8 ��ģ 213
14.9 �����ֽ� 215

��15�� ���g(sh��)�ܘ�(g��u)�c�I(y��)��(w��)�ܘ�(g��u)���ں� 218
15.1 ��ʽ���ӵķ���Փ 218
15.2 ��ʲôҪ���I(l��ng)���(q��)��(d��ng)�� 218
15.3 ���I(y��)��(w��)���̡������ڡ�ϵ�y(t��ng)���̡� 221
15.4 ��κ��y�O(sh��)Ӌ(j��)һ��(g��)�õ��I(l��ng)��ģ�� 222
15.5 �I(l��ng)���(q��)��(d��ng)�O(sh��)Ӌ(j��)�c΢����(w��)�ܘ�(g��u)�ġ��ϡ� 223
15.6 �I(l��ng)���(q��)��(d��ng)�O(sh��)Ӌ(j��)�c�x��(xi��)���x��CQRS�� 224
15.7 �I(y��)��(w��)�֌Ӽܘ�(g��u)ģʽ 225
15.8 �ܵ����^(gu��)�V���ܘ�(g��u)ģʽ 226
15.9 ��B(t��i)�C(j��)�ܘ�(g��u)ģʽ 226
15.10 �I(y��)��(w��)����/�I(y��)��(w��)�]�h(hu��n)�ܘ�(g��u)ģʽ 228

��5���� �ļܘ�(g��u)�����g(sh��)����
��16�� ��(g��)�����|(zh��)������ 232
16.1 ����ģ�� 232
16.2 Ӱ��������� 234

��17�� �F(tu��n)�(du��)���������� 237
17.1 ���_�����c�L(f��ng)�U(xi��n)�ѿ� 237
17.2 ��?x��n)r(ji��)ֵ�����ĵĹ��� 239
17.3 �F(tu��n)�(du��)���B(y��ng) 241

չ�_(k��i)ȫ��

ܛ���ܘ�(g��u)�O(sh��)Ӌ(j��):���;W(w��ng)վ���g(sh��)�ܘ�(g��u)�c�I(y��)��(w��)�ܘ�(g��u)�ں�֮�� ���ߺ�(ji��n)��

�ഺ�����п�Ժܛ����Ӌ(j��)��C(j��)�Tʿ���I(y��)�������ڸ߲��l(f��)�߿��üܘ�(g��u)���I(y��)��(w��)��ģ���I(l��ng)���(q��)��(d��ng)�O(sh��)Ӌ(j��)����ʮ��Ĺ���������(j��ng)�v�^(gu��)�Α����罻���V������̵ȸ��N�(l��i)�͵��(xi��ng)Ŀ���e�����^�S���Ĺ��̽�(j��ng)�(y��n)��

���o(w��)�u(p��ng)Փ����
��(sh��)�����]
����픲�
�ЈD�W(w��ng)
�ھ��ͷ�