📜 ⬆️ ⬇️

Additional lectures of the course "Design of high-loaded systems" (autumn 2018) in Technopolis

image

We continue to publish lectures of the course “Design of High-Load Systems”, which is read to the students of St. Petersburg Polytechnic University by a team of engineers from Odnoklassniki as part of the two-year program “Java Developer of High-Load Applications” of the Technopolis project (a joint Mail.Ru Group project and SPbPU). In 2017, 10 lectures were read and posted (30 hours of video) , but the Highload topic is so extensive that it is impossible to cover everything in one semester. We only briefly plunged into the main aspects of Highload-development, each of which is worth a separate course. This year, we continue to close white spots and bring to your attention a set of six lectures on new topics: we start with parallel computing and livecoding the first stage of the student course project, after which we dive into the JVM monitoring and diagnostic tools, and then proceed to resiliency problems. And after the lecture on advanced algorithms that are relevant in high-load projects, we end the cycle with a lecture on existing approaches to replication and their applicability to various tasks.

The first ten lectures .

List of new lectures:

  1. Actor Model. Future. Reactive Streams (Vadim Tsesko incubos )
  2. Livecoding of the second stage of the project (Vadim Tsesko incubos )
  3. Monitoring and Diagnostics JVM (Andrey Pangin apangin )
  4. Site Reliability Engineering (Anton Ivanov keyplayer )
  5. "Modern" data structures (Dmitry Schitinin dormidoncheg )
  6. Replication (Dmitry Schitinin dormidoncheg )


Lecture 11. Actor Model. Future. Reactive Streams (Vadim Tsesko incubos )



Presentation
Video on the channel Tehnostrim

The lecture discusses modern approaches to the organization of parallel computing, which are gaining popularity recently: Actor Model based on message passing in the Akka implementation; abstract Future / Promise, combinators and callbacks for the organization of asynchronous data processing during IO; and also reveals the essence of Reactive Streams for streaming data processing with back pressure. There are numerous examples of using approaches in existing systems, as well as links for self-study.

Lecture 12. Livecoding second phase of the project (Vadim Tsesko incubos )



Course project
Video on the channel Tehnostrim

Livecoding the basic solution of the project, which Technopolis students should perform this year. Similar to the first lesson, with the only fundamental difference: this time we switched to a high-performance web server from one-nio. Also this time we recorded a video with a more detailed demonstration of the implementation of components.

Lecture 13. Monitoring and diagnostics of JVM (Andrey Pangin apangin )



Presentation
Video on the channel Tehnostrim

The lecture introduces the tools for monitoring a Java application and analyzing common problems: deadlock, memory leaks, performance bottlenecks. Both standard utilities from the JDK and popular third-party software are considered, and Java-profilers are considered. It shows how JMX, JVM TI and other interfaces help in developing your own monitoring and diagnostic tools.

Lecture 14. Site Reliability Engineering (Anton Ivanov keyplayer )



Presentation
Video on the channel Tehnostrim

The lecture is devoted to the basics of writing fault-tolerant code. The typical errors are analyzed, which in practice lead to the fall of highly loaded systems. The first part deals with the problems that arise at the service level: resource pools, their overload, slow start and graceful shutdown. In the second part, we turn to the level of interservice interaction, we consider in detail the types of timeouts, balancing techniques and problems of the rerays. In the final part, issues of monitoring and reactions to incidents are addressed.

Lecture 15. "Modern" data structures (Dmitry Schitinin dormidoncheg )



Presentation
Video on the channel Tehnostrim

The lecture is devoted to data structures, which, as a rule, are not considered in classical courses, but are effectively applied in practice in highly loaded distributed systems. Often this is probabilistic data structures, compact and fast, but giving an approximate result. So, for example, with the help of HyperLogLog, you can estimate the number of different elements in a billion-item dataset, at a cost of no more than a kilobyte, and the result will differ from the exact one by just a few percent. A separate section is devoted to approaches to the calculation of quantiles, their strengths and weaknesses are considered.

Lecture 16. Replication (Dmitry Shchitinin dormidoncheg )



Presentation
Video on the channel Tehnostrim

Along with sharding, replication is at the heart of highly loaded fault tolerant distributed systems. Replication with one dedicated leader is widely used in classic RDBMS. A configuration with several dedicated leaders can occur with systems operating in several DCs, and also occurs in collaborative editing tasks. Replication without a dedicated leader lies at the heart of NoSQL databases, such as Cassandra, Voldemort, Riak, etc. The lecture covers each approach, scope, strengths and weaknesses, and key implementation details.



The playlist of all lectures is on the link , as well as on Youtube .

Course project is here .
Various solutions can be viewed among the closed pull requests .

Broadcasts and video recordings of other Technopolis project courses can be found in the official project group in OK .

We also remind that on Tehnostrim channel there are current lectures and master classes on programming and data analysis from IT-specialists from all educational projects of Mail.Ru Group - Technoatom, Technopark, Technopolis, Technosphere and Technotrak.

Source: https://habr.com/ru/post/437858/