ПОНИМАНИЕ РАСПРЕДЕЛЕННЫХ СИСТЕМ

373cb4344f9749fc80c8f0274061221c

Роберто Витилло (Unknown)

Roberto Vitillo

UNDERSTANDING

DISTRIBUTED

SYSTEMS

WHAT EVERY DEVELOPER SHOULD KNOW ABOUT

LARGE DISTRIBUTED APPLICATIONS

Understanding Distributed Systems

Version 1.0.4

Roberto Vitillo

February 2021

Contents

Copyright

6

About the author

7

Acknowledgements

8

Preface

9

0.1 Who should read this book . . . . . . . . . . . . . .

10

1 Introduction

11

1.1 Communication . . . . . . . . . . . . . . . . . . . .

12

1.2 Coordination . . . . . . . . . . . . . . . . . . . . .

13

1.3 Scalability . . . . . . . . . . . . . . . . . . . . . . .

13

1.4 Resiliency . . . . . . . . . . . . . . . . . . . . . . .

15

1.5 Operations . . . . . . . . . . . . . . . . . . . . . . .

16

1.6 Anatomy of a distributed system . . . . . . . . . .

17

I Communication

20

2 Reliable links

23

2.1 Reliability . . . . . . . . . . . . . . . . . . . . . . .

23

2.2 Connection lifecycle . . . . . . . . . . . . . . . . .

24

2.3 Flow control . . . . . . . . . . . . . . . . . . . . . .

25

2.4 Congestion control . . . . . . . . . . . . . . . . . .

27

2.5 Custom protocols . . . . . . . . . . . . . . . . . . .

28

3 Secure links

30

3.1 Encryption . . . . . . . . . . . . . . . . . . . . . . .

30

3.2 Authentication . . . . . . . . . . . . . . . . . . . .

31

3.3 Integrity . . . . . . . . . . . . . . . . . . . . . . . .

33

CONTENTS

2

3.4 Handshake . . . . . . . . . . . . . . . . . . . . . .

34

4 Discovery

35

5 APIs

39

5.1 HTTP . . . . . . . . . . . . . . . . . . . . . . . . .

41

5.2 Resources . . . . . . . . . . . . . . . . . . . . . . .

43

5.3 Request methods . . . . . . . . . . . . . . . . . . .

45

5.4 Response status codes . . . . . . . . . . . . . . . .