{"id":340272,"date":"2022-10-26T15:00:29","date_gmt":"2022-10-26T15:00:29","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=340272"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=340272","title":{"rendered":"<span>\u041a\u0430\u043a \u043c\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 Kafka: \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u0440\u043d\u0438\u0438 \u043a Cruise Control<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412 2022 \u0433\u043e\u0434\u0443<em> <\/em>\u0438\u0441\u043a\u0443\u0448\u0451\u043d\u043d\u043e\u0433\u043e \u0445\u0430\u0431\u0440\u0430\u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u0443\u0436\u0435 \u043d\u0435 \u0443\u0434\u0438\u0432\u0438\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c Kafka. \u041d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043a\u0443\u0447\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: <a href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/550934\/\"><u>\u0442\u0443\u0442<\/u><\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/beeline\/blog\/674328\/\"><u>\u0442\u0443\u0442<\/u><\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/avito\/blog\/465315\/\"><u>\u0442\u0443\u0442<\/u><\/a> \u0438 <a href=\"https:\/\/habr.com\/ru\/company\/crystal_service\/blog\/669974\/\"><u>\u0442\u0443\u0442<\/u><\/a>.\u00a0\u0410 \u0432\u043e\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0445, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0432 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0443 Kafka, \u0435\u0449\u0451 \u043d\u0435 \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e. \u00a0<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u0442\u044b\u0441\u044f\u0447\u0438 \u0442\u043e\u043f\u0438\u043a\u043e\u0432 \u0438 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u0445, \u0442\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0435\u0449\u0451 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u041d\u043e \u0433\u0434\u0435-\u0442\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0443 \u0440\u0435\u043f\u043b\u0438\u043a \u0441 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0440\u0443\u0442\u0438\u043d\u043e\u0439. \u0410 \u043f\u0440\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0438 \u043e\u0431\u044a\u0451\u043c\u043e\u0432 \u0431\u0435\u0437 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0443\u0436\u0435 \u043d\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0438\u0441\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0432 \u044d\u0442\u043e\u043c \u043f\u043e\u043c\u043e\u0447\u044c.\u00a0<\/p>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u043d\u0430\u0448\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0435\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 Kafka Cruise Control \u043e\u0442 LinkedIn. \u041d\u0430\u0448 \u043f\u0443\u0442\u044c \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043d\u0430 \u043d\u0430\u0448\u0438\u0445 \u043e\u0431\u044a\u0451\u043c\u0430\u0445 \u0431\u044b\u043b \u0442\u0435\u0440\u043d\u0438\u0441\u0442, \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c, \u043f\u043e\u0447\u0442\u0438 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u043e\u043c. \u0410 \u0435\u0441\u043b\u0438 \u0432\u044b \u0434\u0443\u043c\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e Kafka-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432, \u0442\u043e, \u0443\u0432\u0435\u0440\u0435\u043d, \u043f\u043e\u0447\u0435\u0440\u043f\u043d\u0451\u0442\u0435 \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435.\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/427\/a65\/306\/427a653064eb85ec95a48e9ba2093e5e.jpg\" width=\"1920\" height=\"1080\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/427\/a65\/306\/427a653064eb85ec95a48e9ba2093e5e.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<h2>\u041a\u0430\u043a \u0443 \u043d\u0430\u0441 \u0432\u0441\u0451 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e <\/h2>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c, \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e \u043d\u0430\u0441. \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u042e\u0440\u0438\u0439, \u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0432 Ozon.\u00a0<\/p>\n<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u2014 \u044d\u0442\u043e Apache Kafka. \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043c\u044b \u0440\u0435\u0448\u0430\u0435\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u043f\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044e <em>Kafka as a service<\/em>. \u0412 \u044d\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u043c\u044b \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0438\u0434\u0435\u044e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438 \u2014 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u044d\u0442\u043e \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439 \u0440\u0430\u0437\u0443\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0442\u044c \u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u0445 \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u043f\u043b\u0438\u043a, \u0442\u043e\u043d\u043a\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u043e\u043f\u0438\u043a\u0430 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kafka. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0435\u043c\u0443 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u0432\u044b\u0431\u0438\u0440\u0430\u044f \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043d\u0430 \u043f\u043e\u0440\u0442\u0430\u043b\u0435, \u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0442\u043e\u043f\u0438\u043a\u0438 \u043b\u044e\u0431\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043b\u044e\u0431\u043e\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430 \u0438 \u0432\u044b\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u0441 \u043d\u0443\u0436\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e.\u00a0\u00a0<\/p>\n<p>\u041a\u0430\u043a \u0438 \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0445, \u0432 Ozon \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0440\u0451\u0445\u0437\u0432\u0435\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439:\u00a0<\/p>\n<ul>\n<li>\n<p>Dev (\u043c\u0430\u043b\u044b\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u043c\u0430\u043b\u044b\u0435 \u043e\u0431\u044a\u0451\u043c\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0444\u0438\u0447);\u00a0\u00a0<\/p>\n<\/li>\n<li>\n<p>Stage (\u043e\u0431\u044a\u0451\u043c\u044b \u0432 \u0440\u0430\u0437\u044b \u0431\u043e\u043b\u044c\u0448\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u0442\u0435\u0441\u0442\u043e\u0432);\u00a0<\/p>\n<\/li>\n<li>\n<p>Prod (\u0434\u0443\u043c\u0430\u044e, \u0442\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c).\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u0421 \u0447\u0435\u043c \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0434\u0435\u043b\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c. \u041a\u043b\u0430\u0441\u0442\u0435\u0440 Apache Kafka \u0432 Ozon \u2014 \u044d\u0442\u043e:\u00a0<\/p>\n<ul>\n<li>\n<p>\u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044f Apache Kafka 2.7.1 \u0441 ZooKeeper 3.6.3;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0431\u0440\u043e\u043a\u0435\u0440\u044b \u043d\u0430 \u0436\u0435\u043b\u0435\u0437\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0447\u0435\u0442\u044b\u0440\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kafka-\u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u0435\u043c\u044f \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u043c\u0438;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0431\u043e\u043b\u044c\u0448\u0435 70 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0431\u043e\u043b\u044c\u0448\u0435 9400 \u0442\u043e\u043f\u0438\u043a\u043e\u0432;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0442\u044b\u0441\u044f\u0447 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0442\u0435\u0440\u0430\u0431\u0430\u0439\u0442\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 Kafka.\u00a0<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/727\/81c\/d0a\/72781cd0a821ed608d6db76c2ec9e300.png\" alt=\"\u0422\u0438\u043f\u043e\u0432\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0434 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u0435\u043c\u044f \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u043c\u0438 \" title=\"\u0422\u0438\u043f\u043e\u0432\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0434 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u0435\u043c\u044f \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u043c\u0438 \" width=\"1300\" height=\"580\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/727\/81c\/d0a\/72781cd0a821ed608d6db76c2ec9e300.png\"\/><figcaption>\u0422\u0438\u043f\u043e\u0432\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0434 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u0435\u043c\u044f \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u043c\u0438 <\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0441\u0445\u0435\u043c\u044b, \u0432 \u043e\u0434\u0438\u043d \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0432\u0445\u043e\u0434\u0438\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u0445. \u0418 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043d\u0438 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445. \u041d\u0430\u043c \u0432\u0430\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u0436\u0434\u0430\u044f \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u044f \u0438\u043c\u0435\u043b\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u043f\u043b\u0438\u043a \u2014 \u0437\u0430 \u0441\u0447\u0451\u0442 \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0438 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0431\u043e\u0435\u0432. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u0443 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e:\u00a0<\/p>\n<ul>\n<li>\n<p>\u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0438\u0441\u043a\u043e\u0432;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0437\u0430\u043f\u0438\u0441\u0438\/\u0447\u0442\u0435\u043d\u0438\u044f (\u0430 \u044d\u0442\u043e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 \u0441\u0435\u0442\u044c, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u043f\u0430\u043c\u044f\u0442\u044c).\u00a0\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u043f\u043b\u0438\u043a \u043c\u0435\u0436\u0434\u0443 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c\u0438 \u043c\u044b \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u043e\u0439. \u041f\u0435\u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u2014 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0440\u0443\u0434\u043e\u0451\u043c\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043b\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044d\u0442\u043e \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u043e \u0441\u043a\u0443\u0447\u043d\u0430\u044f \u0438 \u043c\u043e\u043d\u043e\u0442\u043e\u043d\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430, \u0435\u0441\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0451 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e. \u00ab\u0410 \u0437\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u043f\u0435\u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u044b\u0432\u0430\u0442\u044c?\u00bb \u2014 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u0432\u044b. \u0412\u0435\u0434\u044c \u043c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u00ab\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u00bb. \u041d\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u0432\u0441\u0451 \u043d\u0435 \u0442\u0430\u043a \u0440\u0430\u0434\u0443\u0436\u043d\u043e: \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u0438\u0437 \u0441\u0442\u0440\u043e\u044f, \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u0442\u043e\u043f\u0438\u043a\u0438 \u0438 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438, \u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 \u043d\u0438\u0445 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u0443\u0436\u0435 \u043e \u0442\u0430\u043a\u0438\u0445 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445, \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0435\u0437\u0434 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430 \u0438\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e.\u00a0<\/p>\n<p>\u041f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c \u044f \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 Apache Kafka. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f \u0442\u0435\u043c, \u0443 \u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b \u0435\u0449\u0451 \u043d\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u0438 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430.\u00a0<\/p>\n<details class=\"spoiler\">\n<summary>\u0411\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Kafka-tools<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">echo '{    \"version\": 1,    \"topics\": [' > kafka_topics.json  \/opt\/kafka\/bin\/kafka-topics.sh \\   --bootstrap-server {{ KAFKA_BROKER_ADDRESS }}:{{ KAFKA_BROKER_PORT }} \\   --list | awk '{print \"{\\042topic\\042:\\042\"$1\"\\042},\"}' >> kafka_topics.json   echo '  ]  }' >> kafka_topics.json <\/code><\/pre>\n<p>\u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0432 \u043a\u043e\u043d\u0446\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u0431\u043b\u043e\u043a\u043e\u043c topic \u0441\u0438\u043c\u0432\u043e\u043b \u201c,\u201d \u0442\u0430\u043a \u043a\u0430\u043a <em>kafka-reassign-partitions.sh<\/em> \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0444\u0430\u0439\u043b\u044b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 JSON.\u00a0<\/p>\n<pre><code class=\"bash\">\/opt\/kafka\/bin\/kafka-reassign-partitions.sh \\   --bootstrap-server {{ KAFKA_BROKER_ADDRESS }}:{{ KAFKA_BROKER_PORT }} \\   --topics-to-move-json-file kafka_topics.json \\   --broker-list \"1007,1008,1009\" \\   --generate > kafka_topics_reassignment.json <\/code><\/pre>\n<p>\u0412 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u0444\u0430\u0439\u043b\u0435 <em>kafka_topics_reassignment.json<\/em> \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0431\u043b\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438. \u041d\u043e \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u044d\u0442\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0435\u0440\u043d\u044b.\u00a0<\/p>\n<pre><code class=\"bash\">tail -n 1 kafka_topics_reassignment.json > kafka_topics_reassignment_proposal.json <\/code><\/pre>\n<p>\u0423\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d \u0432 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435.\u00a0<\/p>\n<pre><code class=\"bash\">\/opt\/kafka\/bin\/kafka-reassign-partitions.sh \\   --bootstrap-server {{ KAFKA_BROKER_ADDRESS }}:{{ KAFKA_BROKER_PORT }} \\   --reassignment-json-file kafka_topics_reassignment_proposal.json \\   --verify <\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443.\u00a0<\/p>\n<pre><code class=\"bash\">\/opt\/kafka\/bin\/kafka-reassign-partitions.sh \\   --bootstrap-server {{ KAFKA_BROKER_ADDRESS }}:{{ KAFKA_BROKER_PORT }} \\   --reassignment-json-file kafka_topics_reassignment_proposal.json \\   --execute <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<h2>\u0412\u044b\u0431\u043e\u0440 \u0440\u0435\u0448\u0435\u043d\u0438\u044f <\/h2>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u0441\u0442\u043e\u044f\u043b\u0430, \u2014 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u043d\u044f\u0442\u0438\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u0435\u043f\u043b\u0438\u043a \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u0445 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u0441\u0442\u0440\u043e\u044f Kafka-\u0431\u0440\u043e\u043a\u0435\u0440\u0430). \u0427\u0435\u043c \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0435\u0435 \u0442\u043e\u043f\u0438\u043a, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0435\u043f\u043b\u0438\u043a \u0443 \u043d\u0435\u0433\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c. \u0423 \u043d\u0430\u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0442\u043e\u043f\u0438\u043a\u043e\u0432 \u0438\u043c\u0435\u044e\u0442 \u0442\u0440\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043f\u0440\u0438 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0434\u0432\u0443\u0445 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0445. \u041f\u0440\u0438 \u0448\u0442\u0430\u0442\u043d\u043e\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438\u043b\u0438 \u0435\u0433\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0438 \u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.\u00a0<\/p>\n<p>\u041e\u0441\u043e\u0431\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043c\u044b \u0443\u0434\u0435\u043b\u044f\u043b\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043f\u043e\u043b\u043e\u0441\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044f \u0441\u0435\u0442\u0438. \u0422\u043e \u0435\u0441\u0442\u044c \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0441\u0443 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 Cruise Control (\u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435) \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b: CPU, RAM, \u0447\u0442\u0435\u043d\u0438\u0435 \u0441 \u0434\u0438\u0441\u043a\u043e\u0432 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0430 \u043d\u0438\u0445.\u00a0\u00a0<\/p>\n<p>\u0410 \u0435\u0449\u0451 \u043d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u0445. \u0422\u043e\u0433\u0434\u0430 \u043f\u0440\u0438 \u043f\u043e\u043b\u043d\u043e\u043c \u0432\u044b\u0445\u043e\u0434\u0435 \u0438\u0437 \u0441\u0442\u0440\u043e\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043d\u0438\u0445 \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Kafka \u0431\u0435\u0437 \u0434\u0435\u0433\u0440\u0430\u0434\u0430\u0446\u0438\u0438.\u00a0<\/p>\n<p>\u0421 \u0442\u0430\u043a\u0438\u043c\u0438 \u0432\u0432\u043e\u0434\u043d\u044b\u043c\u0438 \u043c\u044b \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043b\u0438 \u043a \u043f\u043e\u0434\u0431\u043e\u0440\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043e\u0442\u0441\u0435\u0432\u0430 \u0443 \u043d\u0430\u0441 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u044f\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0438\u0437\u0443\u0447\u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e.\u00a0<\/p>\n<p>\u0418\u0437 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0443\u0436\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a\u0430\u043a\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438. \u041d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043a\u0440\u0430\u0442\u043a\u043e \u043f\u0440\u043e\u0439\u0434\u0451\u043c\u0441\u044f, \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043e\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445.\u00a0<\/p>\n<h3>Confluent Rebalancer <\/h3>\n<p>\u041e\u0434\u043d\u0430 \u0438\u0437 \u0443\u0442\u0438\u043b\u0438\u0442, \u0432\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 Confluent Hub (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0438 \u0431\u0435\u0437 \u0435\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438). \u041e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0431\u043e\u0433\u0430\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0435\u0434\u0438\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c\u044b\u0445 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 (\u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430).\u00a0<\/p>\n<p>\u0427\u0442\u043e \u043d\u0430\u043c \u043d\u0435 \u043f\u043e\u0434\u043e\u0448\u043b\u043e:\u00a0\u00a0<\/p>\n<ul>\n<li>\n<p>\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 Enterprise;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e Enterprise \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438.\u00a0<\/p>\n<\/li>\n<\/ul>\n<h3>Kafka Assigner <\/h3>\n<p>\u0412\u0445\u043e\u0434\u0438\u0442 \u0432 \u043d\u0430\u0431\u043e\u0440 \u0443\u0442\u0438\u043b\u0438\u0442 Kafka Tools \u043e\u0442 LinkedIn. \u0421\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 Python. Kafka Assigner \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0438\u0445. \u0415\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c\u044b\u0445 \u0437\u0430 \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439.\u00a0<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u043b\u0438:\u00a0<\/p>\n<ul>\n<li>\n<p>\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0435\u043b\u0438\u0437 \u0431\u044b\u043b \u0432 2018 \u0433\u043e\u0434\u0443;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0432 Cruise Control.\u00a0<\/p>\n<\/li>\n<\/ul>\n<h3>Orion <\/h3>\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Pinterest, \u0441\u0443\u0434\u044f \u043f\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0438\u043c\u0435\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u0432 Kafka, \u043d\u043e \u0432\u0441\u0451 \u0435\u0449\u0451 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u0442\u0430\u0434\u0438\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u0430 \u043a \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e. \u0414\u0430 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0441\u043b\u0430\u0431\u0430\u044f.\u00a0<\/p>\n<p>\u0427\u0442\u043e \u043d\u0430\u043c \u043d\u0435 \u043f\u043e\u0434\u043e\u0448\u043b\u043e:\u00a0<\/p>\n<ul>\n<li>\n<p>\u043d\u0435\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043d\u0430 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u044b\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0441\u043b\u0430\u0431\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Kafka.\u00a0<\/p>\n<\/li>\n<\/ul>\n<h3>\u041a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b <\/h3>\n<p>\u0423\u0442\u0438\u043b\u0438\u0442\u044b, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438 Apache Kafka, \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 \u043e\u0431\u0448\u0438\u0440\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u043d\u043e \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u0434\u043b\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u0423 \u043d\u0438\u0445 \u043d\u0435\u0442 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043e\u043d\u0438 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432. \u0415\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0443\u0447\u043d\u043e\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 JSON-\u0444\u0430\u0439\u043b\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c. \u041f\u0440\u0438\u043c\u0435\u0440 \u0443\u0441\u043b\u043e\u0432\u0438\u044f: \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c rack.id \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0439 \u0451\u043c\u043a\u043e\u0441\u0442\u0438 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443.\u00a0\u00a0<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\"><strong>\u041a\u0440\u0438\u0442\u0435\u0440\u0438\u0439<\/strong>\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/linkedin\/cruise-control\"><strong><u>Cruise Control<\/u><\/strong><\/a>\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/pinterest\/orion\"><strong><u>Orion<\/u><\/strong><\/a>\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/apache\/kafka\/tree\/trunk\/bin\"><strong><u>\u041a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b<\/u><\/strong><\/a>\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/linkedin\/kafka-tools\/wiki\/Kafka-Assigner\"><strong>Kafka Assigner<\/strong><\/a>\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/docs.confluent.io\/platform\/current\/kafka\/rebalancer\/index.html\"><strong><u>Confluent Rebalancer<\/u><\/strong><\/a>\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u0421\u0440\u0435\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">Java\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">Java\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">Shell + Java\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">Python\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">Shell + Java\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u041d\u0430\u043b\u0438\u0447\u0438\u0435 API \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">?\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u041d\u0430\u043b\u0438\u0447\u0438\u0435 UI \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u044b\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 Kafka-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 (CPU, RAM, HDD, NET)\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u043f\u043e \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u041f\u0435\u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c\u0438\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u0412\u044b\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u043d\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0444\u043b\u0430\u0439\u043d-\u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\/\u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u043e\u043f\u0438\u043a\u0430\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0439 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0435\u0432 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u2014 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0435\u0439 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u043d\u0435\u0434\u0440\u0451\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f.\u00a0<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 Cruise Control. Confluent Rebalancer, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432 Confluent Cloud, \u043d\u0430\u043c \u0442\u043e\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c, \u043d\u043e \u043e\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 Enterprise, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432 \u0420\u043e\u0441\u0441\u0438\u0438 \u043d\u0435 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0441\u0442\u0438. \u0414\u0430 \u0438\u00a0\u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u043c\u0435\u043d\u0435\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0434\u043b\u044f \u043d\u0430\u0441.\u00a0<\/p>\n<h2>\u041e Kafka Cruise Control <\/h2>\n<h3>\u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0430 <\/h3>\n<p>LinkedIn, \u0431\u0443\u0434\u0443\u0447\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c Kafka, \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0435\u0451 \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. \u0421 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 Kafka, \u0438 \u043e\u0431\u044a\u0451\u043c \u043f\u0435\u0440\u0435\u0433\u043e\u043d\u044f\u0435\u043c\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0451 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439.\u00a0<\/p>\n<p>\u0418\u043d\u0436\u0435\u043d\u0435\u0440\u044b LinkedIn <a href=\"https:\/\/engineering.linkedin.com\/blog\/2019\/02\/introducing-kafka-cruise-control-frontend\"><u>\u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442<\/u><\/a> \u0442\u0430\u043a\u0438\u0435 \u0446\u0438\u0444\u0440\u044b \u043f\u043e \u0441\u0432\u043e\u0438\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u044b\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c \u043d\u0430 \u0444\u0435\u0432\u0440\u0430\u043b\u044c 2019 \u0433\u043e\u0434\u0430:\u00a0<\/p>\n<ul>\n<li>\n<p>4,5 \u0442\u0440\u043b\u043d \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0434\u0435\u043d\u044c;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u043e\u043a\u043e\u043b\u043e 2000 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432.\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0443\u0441\u0438\u043b\u0438\u0439 \u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432. \u0412 LinkedIn \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u044b, \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0441 Kafka \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u0438\u0437 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439. \u041e\u0434\u043d\u0430\u043a\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043f\u043e\u043b\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439, \u0442\u043e\u0433\u0434\u0430\u00a0\u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0438 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0441\u0438\u043b, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0440\u0443\u0447\u043d\u044b\u043c\u0438 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u044f\u043c\u0438 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432.\u00a0<\/p>\n<p>\u0412 2017 \u0433\u043e\u0434\u0443 LinkedIn \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0443 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c Kafka Cruise Control, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u0437\u0432\u0430\u043d \u043f\u043e\u043c\u043e\u0447\u044c \u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447.\u00a0<\/p>\n<h3>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 <\/h3>\n<p>\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0431\u044d\u043a\u0435\u043d\u0434-\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 Cruise Control \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432:\u00a0<\/p>\n<ul>\n<li>\n<p>REST API,\u00a0<\/p>\n<\/li>\n<li>\n<p>Executor,\u00a0<\/p>\n<\/li>\n<li>\n<p>Monitor,\u00a0<\/p>\n<\/li>\n<li>\n<p>Analyzer,\u00a0<\/p>\n<\/li>\n<li>\n<p>Anomaly Detector.\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 Apache Kafka (Metrics Reporter). \u0414\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 JAR-\u0444\u0430\u0439\u043b\u0430 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <em>\/libs<\/em> \u043a\u0430\u0436\u0434\u043e\u0433\u043e Kafka-\u0431\u0440\u043e\u043a\u0435\u0440\u0430.\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ac6\/7df\/31b\/ac67df31bc4e2fe7ecb6c2d2b725bbcb.png\" alt=\"\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0432\u0437\u044f\u0442 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 https:\/\/github.com\/linkedin\/cruise-control\/wiki\/Overview\" title=\"\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0432\u0437\u044f\u0442 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 https:\/\/github.com\/linkedin\/cruise-control\/wiki\/Overview\" width=\"1331\" height=\"887\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ac6\/7df\/31b\/ac67df31bc4e2fe7ecb6c2d2b725bbcb.png\"\/><figcaption>\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0432\u0437\u044f\u0442 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 https:\/\/github.com\/linkedin\/cruise-control\/wiki\/Overview<\/figcaption><\/figure>\n<h2>\u041f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a&#8230; <\/h2>\n<p>\u041a\u0430\u043a \u0438 \u0432\u043e \u0432\u0441\u0435\u0445 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0445, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043d\u0430\u043c \u0431\u044b\u043b \u043d\u0443\u0436\u0435\u043d \u0435\u0449\u0451 \u0432\u0447\u0435\u0440\u0430. \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435.\u00a0<\/p>\n<p>\u0414\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0431\u044b\u043b \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Kafka \u0441 ZooKeeper-\u0430\u043c\u0438 \u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0437\u0430\u043b\u0438\u0432\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u043c\u044b \u0432\u0437\u044f\u043b\u0438 <a href=\"https:\/\/github.com\/linkedin\/cruise-control\/blob\/migrate_to_kafka_2_5\/config\/cruisecontrol.properties\"><u>\u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433<\/u><\/a>.\u00a0<\/p>\n<figure class=\"float full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/408\/c79\/67b\/408c7967ba024f9ce13a2f111e29bb69.jpg\" width=\"582\" height=\"437\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/408\/c79\/67b\/408c7967ba024f9ce13a2f111e29bb69.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0431\u044b\u0432\u0430\u0435\u0442, \u0443\u0436\u0435 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043c\u044b \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 <a href=\"https:\/\/github.com\/linkedin\/cruise-control#readme\"><u>README<\/u><\/a> \u0438 \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0441\u0432\u043e\u044e \u043f\u0435\u0440\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Kafka Cruise Control.\u00a0<\/p>\n<p>\u0421\u0442\u0430\u0440\u0442 \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u043f\u0440\u043e\u0448\u0451\u043b \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a.\u00a0<\/p>\n<p>\u041c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0432\u044b\u0434\u0430\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 README \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f:\u00a0\u00a0<br \/><code>.\/gradlew jar copyDependantLibs<\/code>\u00a0<\/p>\n<p>\u0423\u043a\u0430\u0437\u0430\u043b\u0438 \u0432 properties-\u0444\u0430\u0439\u043b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043d\u0430\u0448\u0438\u043c \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c \u0438 ZooKeeper-\u0430\u043c.\u00a0\u00a0<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f: \u00a0<br \/><code>.\/kafka-cruise-control-start.sh config\/cruisecontrol.properties\u00a0<\/code><\/p>\n<p>\u0418 \u0440\u0430\u0434\u043e\u0441\u0442\u043d\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u043b\u0438 \u0437\u0430 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443: <code>http:\/\/{{ IP_address }}:9090.<\/code>\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5ed\/4a0\/f05\/5ed4a0f0561682bd97bac6413b37a836.png\" width=\"1258\" height=\"211\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ed\/4a0\/f05\/5ed4a0f0561682bd97bac6413b37a836.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043c\u044b \u043f\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u043f\u0435\u0440\u0432\u043e\u0435 \u043d\u0435\u0434\u043e\u0443\u043c\u0435\u043d\u0438\u0435: \u0433\u0434\u0435 \u0436\u0435 \u043e\u0431\u0435\u0449\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0437\u0430\u0434\u0430\u0447?\u00a0<\/p>\n<p>\u041a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 Kafka Cruise Control \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. Cruise Control \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/github.com\/linkedin\/cruise-control\/wiki\/REST-APIs\">REST API<\/a>, \u0430 <a href=\"https:\/\/github.com\/linkedin\/cruise-control-ui\"><u>\u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/u><\/a> \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435.\u00a0\u00a0\u00a0<\/p>\n<p>\u041d\u0430\u0434\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0435 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u043b\u0430 \u0432\u0441\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0432 REST API, \u043d\u043e \u0435\u0451 \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432 \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c.\u00a0<\/p>\n<p>\u0414\u043b\u044f \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f, \u043a\u0430\u043a \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f <a href=\"https:\/\/github.com\/linkedin\/cruise-control-ui\/wiki\/Single-Kafka-Cluster\"><u>\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430<\/u><\/a> \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u00ab\u044d\u0442\u043e\u00bb \u2014 \u0438 \u0432\u0443\u0430\u043b\u044f! \u00abCruise Control \u0433\u043e\u0442\u043e\u0432\u00bb, \u2014 \u043f\u043e\u0434\u0443\u043c\u0430\u043b\u0438 \u043c\u044b&#8230;\u00a0<\/p>\n<p>\u0417\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0451\u0434, \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0442\u0435\u0441\u0442\u043e\u0432 \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b\u0438 \u0434\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0432\u0435\u0442\u043a\u0438 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430:\u00a0<\/p>\n<ul>\n<li>\n<p><code>Migrate_to_kafka_2_4<\/code> (\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441 Apache Kafka 2.4);\u00a0<\/p>\n<\/li>\n<li>\n<p><code>Migrate_to_kafka_2_5<\/code> (\u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Apache Kafka 2.7.1 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u043b\u0438\u0437\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441\u0442\u0430\u0440\u0448\u0435 2.5.36).\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u0418, \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0437\u0434\u043d\u0435\u0435, \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0439 \u043d\u0430\u043c \u0432\u0435\u0442\u043a\u0438 <em>Migrate_to_kafka_2_5 <\/em>\u0435\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441\u044b<em>.<\/em>\u00a0<\/p>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0451\u043c\u0441\u044f \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438.\u00a0<\/p>\n<h2>\u041a\u0435\u0439\u0441 1: \u0411\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e rack.id <\/h2>\n<p>\u0423 \u043d\u0430\u0441 <em>rack.id<\/em> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u043c\u0438. \u041d\u0430\u043c \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0442\u043e\u043f\u0438\u043a\u0438 \u0438\u043c\u0435\u043b\u0438 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0435 \u043e\u043d\u0438 \u0438\u043c\u0435\u044e\u0442 \u0442\u0430\u043a\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438:\u00a0<\/p>\n<ul>\n<li>\n<p><code>replication.factor = 3<\/code>,\u00a0<\/p>\n<\/li>\n<li>\n<p><code>min.insync.replicas = 2<\/code>,\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u00a0\u0438 \u043c\u044b \u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043a\u043e\u043f\u0438\u044e \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438 \u0432 \u0442\u0440\u0451\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u0445.\u00a0<\/p>\n<p>\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u0435\u0439\u0441\u0430 \u043f\u0440\u043e\u0448\u043b\u043e \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u0412 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0442\u043e\u043f\u0438\u043a\u0438, \u043d\u0430\u043b\u0438\u043b\u0438 \u0432 \u043d\u0438\u0445 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043f\u043e\u043b\u043d\u0443\u044e \u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443.\u00a0<\/p>\n<p><strong>\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0434\u043e \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438:<\/strong>\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f75\/95e\/99b\/f7595e99ba86c4665b36fb5c2d46f1a9.png\" width=\"1400\" height=\"417\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f75\/95e\/99b\/f7595e99ba86c4665b36fb5c2d46f1a9.png\"\/><figcaption><\/figcaption><\/figure>\n<p><strong>\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043f\u043e\u0441\u043b\u0435 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438:<\/strong>\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/301\/126\/ff7\/301126ff789e62dac9b2d8a9598d291a.png\" width=\"1392\" height=\"424\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/301\/126\/ff7\/301126ff789e62dac9b2d8a9598d291a.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u043c\u043e\u043c\u0435\u043d\u0442 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0439 \u0441 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0435\u043c \u0446\u0435\u043b\u0435\u0439 (<em>goals<\/em>).\u00a0<\/p>\n<p>\u0412 Cruise Control \u0446\u0435\u043b\u0435\u0432\u044b\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0446\u0435\u043b\u044f\u043c\u0438.\u00a0\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0432\u0435 \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u0446\u0435\u043b\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044c \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u043c\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 rack.id:\u00a0<\/p>\n<ul>\n<li>\n<p><code>RackAwareGoal<\/code>;\u00a0\u00a0<\/p>\n<\/li>\n<li>\n<p><code>RackAwareDistributionGoal<\/code>.\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u043e \u0443 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u043e \u0432\u0430\u0436\u043d\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435. \u0415\u0441\u043b\u0438 \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 <code>rack.id<\/code> \u0431\u0443\u0434\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u043f\u043b\u0438\u043a (<code>replication.factor<\/code><em>)<\/em>, \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0446\u0435\u043b\u0438 RackAwareGoal Cruise Control \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439. \u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443: <\/p>\n<blockquote>\n<p><code>there are only 3 racks in the cluster, to skip the rack-awareness check, set skip_rack_awareness_check to true in the request.<\/code>\u00a0<\/p>\n<\/blockquote>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <code>rack.id<\/code> \u043c\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043c\u0435\u0436\u0434\u0443 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u043c\u0438, \u043c\u044b \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0440\u0438\u0441\u043a \u043f\u043e\u0442\u0435\u0440\u0438 \u0446\u0435\u043b\u043e\u0433\u043e \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a\u0430\u043a \u0440\u0430\u0437 \u043a \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438.\u00a0<\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code>rack.id<\/code> \u043c\u044b \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043a\u043e\u043f\u0438\u0438 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u043f\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0435 \u043f\u0440\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u043e\u0434\u043d\u0430 \u043a\u043e\u043f\u0438\u044f. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0436\u0438\u0442\u044c \u043f\u043e\u0442\u0435\u0440\u044e \u0446\u0435\u043b\u043e\u0433\u043e \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430.\u00a0<\/p>\n<p>\u041c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 <strong><em>RackAwareDistributionGoal<\/em><\/strong>. \u041e\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u043c\u0438 \u043f\u0440\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0445 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u0435\u043c\u044f.\u00a0<\/p>\n<h2>\u041a\u0435\u0439\u0441 2: \u0414\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0435 \u0446\u0435\u043b\u0435\u0439 <\/h2>\n<p>\u0412\u0441\u0435 \u0440\u0430\u0441\u0447\u0451\u0442\u044b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 Cruise Control \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f \u043f\u0440\u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u0446\u0435\u043b\u0435\u0439. \u0426\u0435\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u043c\u044b \u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430. \u0412 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u0447\u0442\u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0446\u0435\u043b\u0435\u0439, \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0435 \u0441 Cruise Control, \u0438\u043c\u0435\u044e\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442.\u00a0<\/p>\n<p>\u041f\u0440\u0438\u0432\u0435\u0434\u0443 \u0432\u044b\u0434\u0435\u0440\u0436\u043a\u0443 \u0438\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0446\u0435\u043b\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b <strong>\u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430<\/strong>:\u00a0<\/p>\n<ul>\n<li>\n<p><em>RackAwareGoal<\/em> \u2014 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u044e\u0442\u0441\u044f \u0441 \u0443\u0447\u0435\u0442\u043e\u043c <em>rack.id<\/em>, \u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u0439 <em>rack.id<\/em>-\u0437\u043e\u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438;\u00a0<\/p>\n<\/li>\n<li>\n<p><em>RackAwareDistributionGoal<\/em> \u2014 \u043e\u0431\u043b\u0435\u0433\u0447\u0451\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0446\u0435\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u043f\u043b\u0438\u043a \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0439\u043a\u0435;\u00a0<\/p>\n<\/li>\n<li>\n<p><em>ReplicaCapacityGoal<\/em> \u2014 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u043f\u043b\u0438\u043a \u043d\u0430 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0435\u043b\u0430; \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code>replica.count.balance.threshold<\/code><em> <\/em>\u0432 <em>cruisecontrol.properties<\/em>;\u00a0<\/p>\n<\/li>\n<li>\n<p><em>DiskCapacityGoal<\/em> \u2014 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043e\u0431\u044a\u0451\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043a\u0430\u0436\u0434\u044b\u043c \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u043e\u0433\u0430; \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code>disk.capacity.threshold<\/code><em> <\/em>\u0432 <em>cruisecontrol.properties<\/em>;\u00a0<\/p>\n<\/li>\n<li>\n<p><em>NetworkInboundCapacityGoal<\/em> \u2014 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043e\u0431\u044a\u0451\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0439 \u0441\u0435\u0442\u0438 \u043a\u0430\u0436\u0434\u044b\u043c \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u043e\u0433\u0430; \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code>network.inbound.capacity.threshold<\/code><em> <\/em>\u0432 <em>cruisecontrol.properties<\/em>;\u00a0<\/p>\n<\/li>\n<li>\n<p><em>NetworkOutboundCapacityGoal<\/em> \u2014 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043e\u0431\u044a\u0451\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0439 \u0441\u0435\u0442\u0438 \u043a\u0430\u0436\u0434\u044b\u043c \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u043e\u0433\u0430; \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code>network.outbound.capacity.threshold<\/code><em> <\/em>\u0432 <em>cruisecontrol.properties<\/em>;\u00a0<\/p>\n<\/li>\n<li>\n<p><em>CpuCapacityGoal<\/em> \u2014 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 CPU \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0431\u0440\u043e\u043a\u0435\u0440\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u043e\u0433\u0430; \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code>cpu.capacity.threshold<\/code><em> <\/em>\u0432 <em>cruisecontrol.properties<\/em>;\u00a0<\/p>\n<\/li>\n<li>\n<p><em>ReplicaDistributionGoal<\/em> \u2014 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0438\u043c\u0435\u043b\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u043f\u043b\u0438\u043a;\u00a0<\/p>\n<\/li>\n<li>\n<p><em>PotentialNwOutGoal<\/em> \u2014 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 \u0441\u0435\u0442\u044c (\u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u0441\u0442\u0430\u043d\u0443\u0442 \u043b\u0438\u0434\u0435\u0440\u0430\u043c\u0438) \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0431\u0440\u043e\u043a\u0435\u0440\u0435 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0439 \u0441\u0435\u0442\u0438 (\u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 <em>capacity.json<\/em>);\u00a0<\/p>\n<\/li>\n<li>\n<p><em>DiskUsageDistributionGoal<\/em> \u2014 \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043c\u0438 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c\u0438 \u0431\u044b\u043b\u043e \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u043c;\u00a0<\/p>\n<\/li>\n<li>\n<p><em>NetworkInboundUsageDistributionGoal<\/em> \u2014 \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043c\u0438 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c\u0438 \u0431\u044b\u043b\u043e \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u043c;\u00a0<\/p>\n<\/li>\n<li>\n<p><em>NetworkOutboundUsageDistributionGoal<\/em> \u2014 \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043c\u0438 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c\u0438 \u0431\u044b\u043b\u043e \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u043c;\u00a0<\/p>\n<\/li>\n<li>\n<p><em>CpuUsageDistributionGoal<\/em> \u2014 \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0434\u0438\u0441\u043f\u0435\u0440\u0441\u0438\u044f \u0443\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u0438 CPU \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043c\u0438 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c\u0438 \u0431\u044b\u043b\u0430 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0439;\u00a0<\/p>\n<\/li>\n<li>\n<p><em>LeaderReplicaDistributionGoal<\/em> \u2014 \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043b\u0438\u0434\u0435\u0440-\u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u043f\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 \u0431\u044b\u043b\u043e \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u043c;\u00a0<\/p>\n<\/li>\n<li>\n<p><em>LeaderBytesInDistributionGoal<\/em> \u2014 \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u043b\u0438\u0434\u0435\u0440-\u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0431\u044b\u043b \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u043c;\u00a0<\/p>\n<\/li>\n<li>\n<p><em>TopicReplicaDistributionGoal<\/em> \u2014 \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u0442\u043e\u043f\u0438\u043a\u0430 \u043f\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443;\u00a0<\/p>\n<\/li>\n<li>\n<p><em>IntraBrokerDiskCapacityGoal<\/em> \u2014 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u043e\u0433\u0430; \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u044d\u0442\u0443 \u0446\u0435\u043b\u044c, \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u0443\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e \u0434\u0438\u0441\u043a\u0430\u043c;\u00a0<\/p>\n<\/li>\n<li>\n<p><em>IntraBrokerDiskUsageDistributionGoal<\/em> \u2014 \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0432\u0441\u0435\u043c\u0438 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c\u0438 \u0431\u044b\u043b\u043e \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u043c; \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u044d\u0442\u0443 \u0446\u0435\u043b\u044c, \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u0443\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e \u0434\u0438\u0441\u043a\u0430\u043c.\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043c\u044b \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u0441\u0435 \u0446\u0435\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c\u0438. \u0410 \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0430\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0431\u043e\u0440\u0430 \u0446\u0435\u043b\u0435\u0439, \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440.\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b9c\/819\/723\/b9c8197239ccec9c1ad95dd31cf8eb79.png\" alt=\"\u0417\u0430\u043f\u0443\u0441\u043a \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0441 \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0446\u0435\u043b\u0435\u0439 \" title=\"\u0417\u0430\u043f\u0443\u0441\u043a \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0441 \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0446\u0435\u043b\u0435\u0439 \" width=\"1883\" height=\"856\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b9c\/819\/723\/b9c8197239ccec9c1ad95dd31cf8eb79.png\"\/><figcaption>\u0417\u0430\u043f\u0443\u0441\u043a \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0441 \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0446\u0435\u043b\u0435\u0439 <\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u0438\u0435 \u0446\u0435\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u201c<em>Dry run<\/em>\u201d (\u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u0445\u043e\u043b\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0433\u043e\u043d). Cruise Control \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c, \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u043d\u0430\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043d\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.\u00a0<\/p>\n<p>\u041d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u201c<em>Dry run<\/em>\u201d \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u0442 Cruise Control \u043e\u0442\u0432\u0435\u0442 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 JSON. \u041d\u0430\u0441 \u0431\u0443\u0434\u0443\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e\u043b\u044f:\u00a0<\/p>\n<ul>\n<li>\n<p><code>.summary.onDemandBalancednessScoreBefore<\/code> \u2014 \u043e\u0446\u0435\u043d\u043a\u0430 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0435\u0434\u0438\u043d\u0438\u0446\u0430\u0445 \u0442\u043e\u0433\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438\u043c\u0435\u0435\u0442 \u0441\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438;\u00a0<\/p>\n<\/li>\n<li>\n<p><code>.summary.onDemandBalancednessScoreAfter<\/code> \u2014 \u043e\u0446\u0435\u043d\u043a\u0430 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0435\u0434\u0438\u043d\u0438\u0446\u0430\u0445 \u0442\u043e\u0433\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438\u043c\u0435\u0435\u0442 \u0441\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439: 100% \u2014 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439, 0% \u2014 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0437\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439;\u00a0<\/p>\n<\/li>\n<li>\n<p><code>.goalSummary.goal<\/code><em> <\/em>\u2014 \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0446\u0435\u043b\u0438;\u00a0<\/p>\n<\/li>\n<li>\n<p><code>.goalSummary.status<\/code> \u2014 \u0441\u0442\u0430\u0442\u0443\u0441, \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0439, \u0441\u043c\u043e\u0436\u0435\u0442 \u043b\u0438 Cruise Control \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0446\u0435\u043b\u0438; \u0435\u0441\u0442\u044c \u0442\u0440\u0438 \u0442\u0438\u043f\u0430 \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u0432: <em>FIXED, NO-ACTION, VIOLATED<\/em>.\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0443\u044f\u0441\u044c \u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043e\u0442 Cruise Control \u0441\u0442\u0430\u0442\u0443\u0441, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0446\u0435\u043b\u0438 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043b\u0443\u0447\u0448\u0435\u0439 \u0441\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0446\u0435\u043b\u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0442 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0445, \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439 \u0438 Cruise Control \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u0418\u043d\u0436\u0435\u043d\u0435\u0440, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0443\u044f\u0441\u044c \u043f\u043e \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c Kafka-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b\u0440\u043e\u0432\u043d\u044f\u0442\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u0441\u0435\u0442\u0435\u0432\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u043e \u043b\u0438\u0434\u0435\u0440-\u043f\u0430\u0440\u0442\u0438\u0446\u0438\u044f\u043c. \u0422\u043e\u0433\u0434\u0430 \u043c\u044b \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0431\u043e\u0440 \u0446\u0435\u043b\u0435\u0439, \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 \u0434\u043b\u044f \u043d\u0443\u0436\u043d\u043e\u0439 \u043d\u0430\u043c \u0446\u0435\u043b\u0438 \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0437\u0430\u0432\u0435\u0442\u043d\u043e\u0435 <em>FIXED<\/em>.\u00a0\u00a0<\/p>\n<p>\u0421 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u043c\u0438\u0441\u044f \u043a\u0435\u0439\u0441\u0430\u043c\u0438 \u043d\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0432\u043e\u0437\u0438\u0442\u044c\u0441\u044f.\u00a0<\/p>\n<h2>\u041a\u0435\u0439\u0441 3: \u0412 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c\u044b\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438 <\/h2>\n<p>\u0414\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0432 Cruise Control \u0435\u0441\u0442\u044c \u0434\u0432\u0435 \u043e\u043f\u0446\u0438\u0438:\u00a0<\/p>\n<ul>\n<li>\n<p>\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 <em>cruisecontrol.properties<\/em> \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>default.replication.throttle<\/code>;\u00a0\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 POST-\u0437\u0430\u043f\u0440\u043e\u0441 \u0432 REST API.\u00a0\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0435\u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 Cruise Control, \u043c\u044b \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0443\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u043d\u0430 \u043d\u0430\u0448\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445 \u0438 \u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0441\u0440\u0435\u0434 \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e default.replication.throttle (\u0438\u0437\u043c\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0432 \u0431\u0430\u0439\u0442\u0430\u0445 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443) \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438:\u00a0<\/p>\n<ul>\n<li>\n<p>Dev = 12500000<em>Bps<\/em> (100<em>Mbps<\/em>),\u00a0<\/p>\n<\/li>\n<li>\n<p>Stage = 125000000<em>Bps<\/em> (1<em>Gbps<\/em>),\u00a0<\/p>\n<\/li>\n<li>\n<p>Prod = 250000000<em>Bps<\/em> (2<em>Gbps<\/em>).\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0430 \u0432\u0435\u0442\u043a\u0435 <code>Migrate_to_kafka_2_5<\/code> \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0434\u0435\u043b\u043e \u043d\u0435 \u0434\u043e\u0448\u043b\u043e \u0434\u043e \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u043e\u0433\u043e \u043a\u0435\u0439\u0441\u0430 \u0441 \u043c\u0451\u0440\u0442\u0432\u044b\u043c \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u043c.\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/915\/154\/4f6\/9151544f63b15226f7ae7be5846423dc.png\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0441 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u043d\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c replication_throttle = 20000000Bps \" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0441 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u043d\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c replication_throttle = 20000000Bps \" width=\"924\" height=\"265\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/915\/154\/4f6\/9151544f63b15226f7ae7be5846423dc.png\"\/><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0441 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u043d\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c replication_throttle = 20000000Bps <\/figcaption><\/figure>\n<h2>\u041a\u0435\u0439\u0441 4: \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043c\u0451\u0440\u0442\u0432\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0438\u043b\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 logDirectory <\/h2>\n<p>\u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 \u0434\u043b\u044f \u043b\u0435\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0439 \u043e\u0442 \u0443\u043f\u0430\u0432\u0448\u0435\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u00a0(\u0434\u043b\u044f \u0431\u043e\u0435\u0432\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c \u0442\u0430\u0439\u043c\u0435\u0440\u044b \u043d\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b). \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 <em>cruisecontrol.properties<\/em> \u043c\u0435\u043d\u044f\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:\u00a0<\/p>\n<ul>\n<li>\n<p><code>self.healing.broker.failure.enabled=true<\/code><em>,<\/em>\u00a0<\/p>\n<\/li>\n<li>\n<p><code>broker.failure.alert.threshold.ms=300000<\/code><em>,<\/em>\u00a0<\/p>\n<\/li>\n<li>\n<p><code>broker.failure.self.healing.threshold.ms=600000<\/code><em>,<\/em>\u00a0<\/p>\n<\/li>\n<li>\n<p><code>broker.failure.detection.interval.ms=300000<\/code><em> (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 migrate_to_kafka_2_5),<\/em>\u00a0<\/p>\n<\/li>\n<li>\n<p><code>kafka.broker.failure.detection.enable=true<\/code><em> (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 migrate_to_kafka_2_5).<\/em>\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043e\u0434\u0438\u043d Kafka-\u0431\u0440\u043e\u043a\u0435\u0440, \u0438\u043c\u0438\u0442\u0438\u0440\u0443\u044f \u0435\u0433\u043e \u0441\u043c\u0435\u0440\u0442\u044c. \u0414\u043e\u0436\u0438\u0434\u0430\u0435\u043c\u0441\u044f \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0441 \u0433\u0440\u0443\u0441\u0442\u044c\u044e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c \u0437\u0430 \u0442\u0435\u043c, \u043a\u0430\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00a0\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439. \u0421\u0430\u043c\u043e\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e Kafka-\u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b\u0437\u043e\u0432\u0430 \u0440\u0443\u0447\u043a\u0438 <em>Remove Broker<\/em> \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438. \u041d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0432 \u043b\u043e\u0433\u0430\u0445 \u043c\u044b \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u043b\u0438 \u00ab\u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0443\u044e\u00bb \u043e\u0448\u0438\u0431\u043a\u0443:\u00a0<\/p>\n<pre><code class=\"java\">ERROR Executor got exception during execution (com.linkedin.kafka.cruisecontrol.executor.Executor)  java.util.concurrent.TimeoutException: null          at java.util.concurrent.CompletableFuture.timedGet(CompletableFuture.java:1886) ~[?:?]          at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2021) ~[?:?]          at org.apache.kafka.common.internals.KafkaFutureImpl.get(KafkaFutureImpl.java:180) ~[kafka-clients-3.1.0.jar:?]          at com.linkedin.kafka.cruisecontrol.executor.ReplicationThrottleHelper.getEntityConfigs(ReplicationThrottleHelper.java:203) <\/code><\/pre>\n<p>\u041d\u0430 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u044b \u043d\u0435 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u043b\u0438\u0441\u044c \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 Cruise Control, \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 <code>TimeoutException: null<\/code> \u043d\u0435 \u043d\u0430\u0432\u0435\u043b\u0430 \u043d\u0430\u0441 \u043d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c.\u00a0\u00a0<\/p>\n<p>\u041a\u0430\u043a \u044f \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u0432\u044b\u0448\u0435, \u0435\u0441\u0442\u044c \u0434\u0432\u0435 \u0432\u0435\u0442\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f:\u00a0<\/p>\n<ul>\n<li>\n<p><code>Migrate_to_kafka_2_4<\/code>,\u00a0<\/p>\n<\/li>\n<li>\n<p><code>Migrate_to_kafka_2_5<\/code>.\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u043e\u0431\u0441\u0442\u043e\u044f\u0442 \u0434\u0435\u043b\u0430 \u0441 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c \u043a\u0435\u0439\u0441\u043e\u043c \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u0442\u043a\u0435. \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u0432\u0435\u0442\u043a\u0443 <code>Migrate_to_kafka_2_4<\/code> \u0438 \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.\u00a0\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0435\u0433\u043e \u0441 \u0442\u0435\u043c\u0438 \u0436\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438. \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u043d\u043e \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0440\u0443\u0447\u043a\u0438\u00a0<em>Remove Broker<\/em>\u00a0\u0437\u0430\u0434\u0430\u043d\u0438\u044f \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0438 \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a.\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/010\/6dc\/5ca\/0106dc5cad2d856f93cd16079a13238c.png\" alt=\"\u0417\u0430\u043f\u0443\u0441\u043a \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \" title=\"\u0417\u0430\u043f\u0443\u0441\u043a \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \" width=\"1898\" height=\"603\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/010\/6dc\/5ca\/0106dc5cad2d856f93cd16079a13238c.png\"\/><figcaption>\u0417\u0430\u043f\u0443\u0441\u043a \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0431\u0440\u043e\u043a\u0435\u0440\u0430 <\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1e3\/721\/a70\/1e3721a70d6112149e68231451ad3e70.png\" alt=\"\u041f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0440\u0435\u043f\u043b\u0438\u043a \u0431\u0440\u043e\u043a\u0435\u0440 \u0443\u0434\u0430\u043b\u0438\u043b\u0441\u044f \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \" title=\"\u041f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0440\u0435\u043f\u043b\u0438\u043a \u0431\u0440\u043e\u043a\u0435\u0440 \u0443\u0434\u0430\u043b\u0438\u043b\u0441\u044f \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \" width=\"1874\" height=\"599\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1e3\/721\/a70\/1e3721a70d6112149e68231451ad3e70.png\"\/><figcaption>\u041f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0440\u0435\u043f\u043b\u0438\u043a \u0431\u0440\u043e\u043a\u0435\u0440 \u0443\u0434\u0430\u043b\u0438\u043b\u0441\u044f \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 <\/figcaption><\/figure>\n<p>\u0421 \u043d\u0435\u0434\u043e\u0443\u043c\u0435\u043d\u0438\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u0438 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u00a0\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0432 \u0431\u043e\u043b\u0435\u0435 \u0441\u0432\u0435\u0436\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0430 \u0432\u0435\u0442\u043a\u0435 <code>Migrate_to_kafka_2_5<\/code>. \u0412 \u043d\u0435\u0439 \u043f\u0440\u0438 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u043f\u0438\u043a\u043e\u0432 \u0438 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438\u0434\u0443\u0442 \u0447\u0435\u0440\u0435\u0437 Kafka API, \u0430 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442 Kafka-\u0431\u0440\u043e\u043a\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435.\u00a0<\/p>\n<p>\u041d\u0430 \u0432\u0435\u0442\u043a\u0435 <code>Migrate_to_kafka_2_4<\/code> \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f Cruise Control \u043a ZooKeeper-\u0443. \u0418 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0443 \u043c\u043e\u0434\u0443\u043b\u044f Executor \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0439 \u0437\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 (<code>ReplicationThrottleHelper<\/code>). \u0412\u00a0\u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0443 \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0443 ZooKeeper-\u0430. \u0411\u0440\u043e\u043a\u0435\u0440\u044b \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0432\u044b\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u043e\u043f\u0438\u043a\u0430\u0445 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435. \u00a0<\/p>\n<p>\u0421\u0443\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443, \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 Cruise Control \u0438\u0437 \u0432\u0435\u0442\u043a\u0438 <code>Migrate_to_kafka_2_5<\/code> \u043b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043b\u0430\u0441\u0441\u0430 <code>ReplicationThrottleHelper<\/code> \u043d\u0435 \u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u044c Executor \u0438 \u0432\u0441\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0431\u044b\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Kafka API. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0451\u0440\u0442\u0432\u044b\u0439 \u0431\u0440\u043e\u043a\u0435\u0440, <code>ReplicationThrottleHelper<\/code><em> <\/em>\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442 \u043d\u0435\u0433\u043e \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u043f\u043e \u0442\u0430\u0439\u043c-\u0430\u0443\u0442\u0443.\u00a0<\/p>\n<p>\u041d\u0430\u0447\u0430\u043b\u0438 \u0438\u0437\u0443\u0447\u0430\u0442\u044c, \u043a\u0430\u043a \u043d\u0430\u043c \u0438 \u0440\u044b\u0431\u043a\u0443 \u0441\u044a\u0435\u0441\u0442\u044c, \u0438 \u043a\u043e\u0441\u0442\u043e\u0447\u043a\u043e\u0439 \u043d\u0435 \u043f\u043e\u0434\u0430\u0432\u0438\u0442\u044c\u0441\u044f.\u00a0\u00a0<\/p>\n<p>\u041d\u0443\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 Cruise Control \u0431\u044b\u043b \u0444\u043e\u0440\u043a\u043d\u0443\u0442 \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439. \u041c\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u044d\u0442\u0430\u043f\u0435 <code>ReplicationThrottleHelper<\/code><em> <\/em>\u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430, \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u0442\u0447. \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u043c\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u043d\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c\u0441\u044f, \u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u043f\u043e\u0440\u0430 (\u0431\u044b\u043b \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0434\u0435\u0434\u043b\u0430\u0439\u043d). \u0422\u043e\u0433\u0434\u0430 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0443\u0437\u043d\u0430\u0442\u044c, \u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0432\u0435\u0440\u0441\u0438\u0438 <code>ReplicationThrottleHelper<\/code><em>. <\/em>\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u044b \u0438 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438, \u0447\u0442\u043e \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u044b\u043b\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c ZooKeeper-\u0430, \u0430 \u0432\u0441\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 Kafka API. \u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u043d\u0430\u0448\u0435\u043c \u0444\u043e\u0440\u043a\u043d\u0443\u0442\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0433\u0438\u0431\u0440\u0438\u0434, \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u044c \u043a\u043e\u043c\u043c\u0438\u0442, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441 \u0432\u044b\u043f\u0438\u043b\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0447\u0435\u0440\u0435\u0437 ZooKeeper, \u0430 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c. \u041e\u0442\u043a\u0430\u0442\u0438\u043b\u0438 \u043a\u043e\u043c\u043c\u0438\u0442, \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 \u0438 \u043e \u0447\u0443\u0434\u043e! \u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u043e\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f, \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0435\u0440\u0435\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0441 \u043c\u0451\u0440\u0442\u0432\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430.\u00a0<\/p>\n<p>\u041e\u0441\u043e\u0437\u043d\u0430\u0432 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u0437\u0430\u0432\u0435\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c <a href=\"https:\/\/github.com\/linkedin\/cruise-control\/issues\/1865\"><u>issue<\/u><\/a>. \u0423\u0431\u0435\u0434\u0438\u043b\u0438\u0441\u044c \u0435\u0449\u0451 \u0440\u0430\u0437, \u0447\u0442\u043e \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0423\u0441\u043f\u0435\u0445!\u00a0<\/p>\n<h2>\u041f\u0435\u0440\u0432\u044b\u0435 \u043f\u043e\u043b\u0443\u0431\u043e\u0435\u0432\u044b\u0435 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u044f   <\/h2>\n<p>Stage-\u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u0437 \u0448\u0435\u0441\u0442\u0438 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432:\u00a0<\/p>\n<ul>\n<li>\n<p>2,3 \u0422\u0411 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438;\u00a0<\/p>\n<\/li>\n<li>\n<p>3470 \u0442\u043e\u043f\u0438\u043a\u043e\u0432;\u00a0<\/p>\n<\/li>\n<li>\n<p>16 500 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439.\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0432\u0441\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439, \u043c\u044b \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u043e\u0434\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0439 \u0437\u0430 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c\u044b\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430. \u00a0<\/p>\n<p>\u0412 <em>cruisecontrol.properties<\/em> \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438 <code>num.concurrent.partition.movements.per.broker = 100<\/code><em> (\u0431\u044b\u043b\u043e 10)<\/em>, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0441\u0431\u043e\u0440\u043a\u0443 \u2014 \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u0435 \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442. \u0412 \u043b\u043e\u0433\u0430\u0445 \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u043d\u0435\u0432\u043d\u044f\u0442\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443, \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043b\u0438\u043c\u0438\u0442 \u0432 12 \u0435\u0434\u0438\u043d\u0438\u0446. \u0418\u0449\u0435\u043c \u043f\u043e\u043b\u043d\u044b\u0435 \u043b\u043e\u0433\u0438 \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u00ab\u043f\u043e\u0440\u0442\u044f\u043d\u043a\u0443\u00bb \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 12, \u2014 <code>concurrency.adjuster.max.partition.movements.per.broker<\/code><em>.<\/em> \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e: \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c\u0438 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439. \u0412 \u044d\u0442\u043e\u043c \u0436\u0435 \u0444\u0430\u0439\u043b\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043c\u0435\u0436\u0434\u0443 <code>num.concurrent.partition.movements.per.broker<\/code> \u0438 <code>max.num.cluster.movements<\/code><em>.<\/em> \u0423\u0434\u0438\u0432\u043b\u044f\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0435\u0433\u043e \u0441\u0440\u0430\u0437\u0443 \u043d\u0435 \u0431\u044b\u043b\u043e \u0432 cruisecontrol.properties&#8230;\u00a0\u00a0<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c:\u00a0\u00a0<\/p>\n<ul>\n<li>\n<p><code>num.concurrent.partition.movements.per.broker = 100<\/code><em>,<\/em>\u00a0<\/p>\n<\/li>\n<li>\n<p><code>concurrency.adjuster.max.partition.movements.per.broker = 500<\/code><em>.<\/em>\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u043e\u043b\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0423\u0431\u0435\u0434\u0438\u0432\u0448\u0438\u0441\u044c, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438\u0441\u044c \u0438 Cruise Control \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u043e\u043a\u043e\u043b\u043e 540 \u0413\u0431 \u0434\u0430\u043d\u043d\u044b\u0445, \u044f \u0440\u0435\u0448\u0438\u043b \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u043a\u0440\u0443\u0436\u0435\u0447\u043a\u0443 \u043a\u043e\u0444\u0435.\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ce2\/7a5\/38f\/ce27a538f8a588079faf96678966c05a.png\" alt=\"\u0421\u0442\u0430\u0442\u0443\u0441 \u043c\u043e\u0434\u0443\u043b\u044f Executor \u0432 Cruise Control UI \" title=\"\u0421\u0442\u0430\u0442\u0443\u0441 \u043c\u043e\u0434\u0443\u043b\u044f Executor \u0432 Cruise Control UI \" width=\"1368\" height=\"811\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ce2\/7a5\/38f\/ce27a538f8a588079faf96678966c05a.png\"\/><figcaption>\u0421\u0442\u0430\u0442\u0443\u0441 \u043c\u043e\u0434\u0443\u043b\u044f Executor \u0432 Cruise Control UI <\/figcaption><\/figure>\n<p>\u0412\u0435\u0440\u043d\u0443\u0432\u0448\u0438\u0441\u044c \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u043c\u0435\u0441\u0442\u043e \u0441\u043f\u0443\u0441\u0442\u044f 15 \u043c\u0438\u043d\u0443\u0442, \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430, \u043d\u0430\u0447\u0430\u043b \u0443\u0434\u0438\u0432\u043b\u0451\u043d\u043d\u043e \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u2014 \u0438 \u0443\u0432\u0438\u0434\u0435\u043b, \u0447\u0442\u043e \u043e\u043d\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0430\u0441\u044c \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439.\u00a0<\/p>\n<pre><code class=\"java\">ERROR SASL authentication failed using login context 'Client' with exception: {} (org.apache.zookeeper.client.ZooKeeperSaslClient)  javax.security.sasl.SaslException: Error in authenticating with a Zookeeper Quorum member: the quorum member's saslToken is null.          at org.apache.zookeeper.client.ZooKeeperSaslClient.createSaslToken(ZooKeeperSaslClient.java:312) ~[zookeeper-3.5.9.jar:3.5.9]          at org.apache.zookeeper.client.ZooKeeperSaslClient.respondToServer(ZooKeeperSaslClient.java:275) [zookeeper-3.5.9.jar:3.5.9]          at org.apache.zookeeper.ClientCnxn$SendThread.readResponse(ClientCnxn.java:882) [zookeeper-3.5.9.jar:3.5.9]          at org.apache.zookeeper.ClientCnxnSocketNIO.doIO(ClientCnxnSocketNIO.java:103) [zookeeper-3.5.9.jar:3.5.9]          at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:365) [zookeeper-3.5.9.jar:3.5.9]          at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1223) [zookeeper-3.5.9.jar:3.5.9] <\/code><\/pre>\n<p>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0438\u0437 \u043e\u0448\u0438\u0431\u043a\u0438, ZooKeeper-\u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0443 \u043d\u0430\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <em>SASL-\u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438<\/em> \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u0412 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438 Cruise Control \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0439\u0442\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e.\u00a0\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/625\/4c0\/89d\/6254c089d4135b5ca4992e3c75906783.jpg\" alt=\"\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0435\u0432\u0435\u0437\u0435\u043d\u0438\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0441\u044f \u043a \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438 \" title=\"\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0435\u0432\u0435\u0437\u0435\u043d\u0438\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0441\u044f \u043a \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438 \" width=\"1440\" height=\"428\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/625\/4c0\/89d\/6254c089d4135b5ca4992e3c75906783.jpg\" data-blurred=\"true\"\/><figcaption>\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0435\u0432\u0435\u0437\u0435\u043d\u0438\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0441\u044f \u043a \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438 <\/figcaption><\/figure>\n<p>\u0418\u0434\u0451\u043c \u0432 \u043b\u043e\u0433\u0438 ZooKeeper-\u0430 \u0438 \u0432\u0438\u0434\u0438\u043c \u0442\u0430\u043c \u043e\u0448\u0438\u0431\u043a\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0447\u0430\u0441\u0442\u044b\u043c \u043f\u0435\u0440\u0435\u0432\u044b\u0431\u043e\u0440\u043e\u043c \u043b\u0438\u0434\u0435\u0440\u0430.\u00a0<\/p>\n<p>\u041f\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u043c \u0432 Grafana \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0441\u0442\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u043a \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0432\u044b\u0431\u043e\u0440 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0447\u0430\u0441\u0442\u043e, \u043d\u043e \u043d\u0435 \u0434\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438, \u0447\u0442\u043e\u0431\u044b Cruise Control \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447 \u043d\u0430 \u043f\u0435\u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443. \u0411\u043e\u043d\u0443\u0441\u043e\u043c \u0432\u0438\u0434\u0438\u043c \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u0445, \u0447\u0442\u043e \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 Cruise Control \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 ZooKeeper-\u0430 \u043a\u0440\u0430\u0442\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f.\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/efb\/185\/da3\/efb185da3f62339b43abbf1cf1cd81ac.png\" alt=\"\u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u043d\u043e\u0434\u0430\u043c ZooKeeper\" title=\"\u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u043d\u043e\u0434\u0430\u043c ZooKeeper\" width=\"1407\" height=\"635\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/efb\/185\/da3\/efb185da3f62339b43abbf1cf1cd81ac.png\"\/><figcaption>\u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u043d\u043e\u0434\u0430\u043c ZooKeeper<\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2cf\/005\/f5b\/2cf005f5ba39ead3e20d88eda9bbd989.png\" alt=\"\u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u043a\u0432\u043e\u0440\u0443\u043c\u0430 ZooKeeper \" title=\"\u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u043a\u0432\u043e\u0440\u0443\u043c\u0430 ZooKeeper \" width=\"1359\" height=\"618\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2cf\/005\/f5b\/2cf005f5ba39ead3e20d88eda9bbd989.png\"\/><figcaption>\u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u043a\u0432\u043e\u0440\u0443\u043c\u0430 ZooKeeper <\/figcaption><\/figure>\n<p>\u0415\u0449\u0451 \u0440\u0430\u0437 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u0443\u0447\u0430\u0435\u043c \u043b\u043e\u0433\u0438 Cruise Control, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e. \u0412 \u0433\u043e\u043b\u043e\u0432\u0435 \u043c\u0435\u043b\u044c\u043a\u0430\u0435\u0442 \u043c\u044b\u0441\u043b\u044c, \u0447\u0442\u043e \u043e\u0442 \u0442\u0430\u043a\u0438\u0445 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0430\u0434\u0430\u0442\u044c \u0442\u0430\u0441\u043a\u0438 \u043d\u0430 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443: \u0441\u0430\u043c ZooKeeper-\u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0436\u0438\u0432, \u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Kafka \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c.\u00a0\u00a0<\/p>\n<p>\u0417\u0430\u043c\u0435\u0447\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u044d\u0442\u0430\u043f\u043d\u043e\u0441\u0442\u044c:\u00a0<\/p>\n<ul>\n<li>\n<p>Cruise Control \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0443 \u0442\u043e\u043f\u0438\u043a\u043e\u0432, \u043d\u0430\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0430. \u0412 ZooKeeper \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438: <code>\/config\/topics\/{{ topics_name }}<\/code>.\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0412\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. <em>zookeeper.client<\/em> \u0433\u0430\u0441\u0438\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0435\u0441\u0441\u0438\u044e \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 <em>socket<\/em> \u0441 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c.\u00a0<\/p>\n<\/li>\n<li>\n<p>\u041e\u0434\u043d\u043e\u043c\u043e\u043c\u0435\u043d\u0442\u043d\u043e \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043e\u0448\u0438\u0431\u043a\u0443 <code>ERROR SASL authentication failed using login context 'Client' with exception: {} (org.apache.zookeeper.client.ZooKeeperSaslClient)<\/code>.\u00a0<\/p>\n<\/li>\n<li>\n<p><em>zookeeper.client<\/em> \u0433\u0430\u0441\u0438\u0442 \u043d\u043e\u0432\u0443\u044e \u0441\u0435\u0441\u0441\u0438\u044e, \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 <em>socket<\/em> \u0441 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435.\u00a0<\/p>\n<\/li>\n<li>\n<p>Cruise Control \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u043d\u0430 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443.\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u0433\u043e\u043b\u043e\u0432\u0435 \u043c\u0435\u043b\u044c\u043a\u0430\u0435\u0442 \u043c\u044b\u0441\u043b\u044c, \u0447\u0442\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0435\u0449\u0451 \u043d\u0435 \u0443\u0441\u043f\u0435\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0433\u043e \u043b\u0438\u0434\u0435\u0440\u0430 \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0443\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435&#8230;\u00a0<\/p>\n<p>\u0417\u0430\u043c\u0435\u0447\u0430\u0435\u043c \u0432 \u043b\u043e\u0433\u0430\u0445 \u043f\u0440\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 ZooKeeper-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u043d\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u044e\u0449\u0443\u044e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0443 \u043e\u0442 zookeeper.client:\u00a0<\/p>\n<blockquote>\n<p><code>INFO zookeeper.request.timeout value is 0. feature enabled= (org.apache.zookeeper.ClientCnxn)<\/code>\u00a0<\/p>\n<\/blockquote>\n<p>\u041e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>zookeeper.request.timeout<\/code>! \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0432\u044b\u044f\u0441\u043d\u044f\u0442\u044c, \u0437\u0430 \u0447\u0442\u043e \u043e\u043d \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0438 \u043a\u0430\u043a\u043e\u0439 \u0442\u0430\u0439\u043c-\u0430\u0443\u0442 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442. \u041f\u0435\u0440\u0435\u0440\u044b\u043b\u0438 \u043a\u0443\u0447\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e, \u2014 \u0438 \u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u00a0\u044d\u0442\u043e\u0442 \u0437\u0430\u0433\u0430\u0434\u043e\u0447\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440. \u0421 \u043d\u0430\u0434\u0435\u0436\u0434\u043e\u0439 \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u043b\u0438 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 <a href=\"https:\/\/github.com\/apache\/zookeeper\/search?l=Java&amp;q=zookeeper.request.timeout&amp;type=code\"><u>Apache ZooKeeper<\/u><\/a>, \u043d\u043e \u0438 \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u043b\u043e.\u00a0<\/p>\n<p>\u00ab\u041b\u0430\u0434\u043d\u043e, \u2014 \u0440\u0435\u0448\u0438\u043b\u0438 \u043c\u044b. \u2014 \u041f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0430\u00bb. \u041d\u043e \u043a\u0430\u043a\u043e\u0435? \u0412 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u0440\u044b\u0432\u043a\u0430\u0445 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043e\u0442\u043d\u043e\u0441\u044f\u0442 \u043a \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0435, \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u043c\u043e\u0439 \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. \u0417\u0430 \u0438\u0441\u0442\u0438\u043d\u0443 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430: \u0440\u0430\u0437 \u0442\u0430\u043c \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0431\u043b\u0438\u0437\u043a\u0438\u0435 \u043a \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434, \u0442\u043e \u0438 \u043c\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c.\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9f1\/626\/0b6\/9f16260b60cbc4899959485d71b195c4.png\" width=\"838\" height=\"141\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9f1\/626\/0b6\/9f16260b60cbc4899959485d71b195c4.png\"\/><figcaption><\/figcaption><\/figure>\n<blockquote>\n<p><em>\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0440\u0443\u0433, \u0435\u0441\u043b\u0438 \u0443 \u0442\u0435\u0431\u044f \u0435\u0441\u0442\u044c \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u0435\u043b\u0438\u0441\u044c.<\/em>\u00a0<\/p>\n<\/blockquote>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c <code>-Dzookeeper.request.timeout=2000<\/code> \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043f\u043e\u043b\u043d\u0443\u044e \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.\u00a0<\/p>\n<blockquote>\n<p><em>\u041f\u043e\u043a\u0430 \u043c\u044b \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u044c \u043f\u043e\u0438\u0441\u043a\u043e\u043c \u043f\u0440\u0438\u0447\u0438\u043d \u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u0432 Cruise Control, \u043d\u0430\u0448\u043b\u0438 \u0431\u0430\u0433 \u0432 ZooKeeper-\u0435: \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, <\/em><a href=\"https:\/\/issues.apache.org\/jira\/browse\/ZOOKEEPER-2170\"><em><u>\u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/u><\/em><\/a><em>.<\/em>\u00a0<\/p>\n<\/blockquote>\n<p>\u041c\u044b \u0435\u0449\u0451 \u0440\u0430\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0430\u0439\u043c-\u0430\u0443\u0442\u0430. \u041a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u0445 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0439 \u043d\u0435 \u0432\u044b\u044f\u0432\u0438\u043b\u0438 \u2014 \u0438 \u0440\u0435\u0448\u0438\u043b\u0438 \u0435\u0449\u0451 \u0440\u0430\u0437 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u0443\u044e \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043b\u0438 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0432\u044b\u0431\u043e\u0440\u0430 \u043b\u0438\u0434\u0435\u0440\u0430 ZooKeeper-\u0430 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 Cruise Control.\u00a0\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cd6\/459\/f85\/cd6459f85ae08a7f3136f92280081782.png\" width=\"1440\" height=\"269\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cd6\/459\/f85\/cd6459f85ae08a7f3136f92280081782.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0440\u0438 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0443, \u0447\u0442\u043e ZooKeeper \u043d\u0435 \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 Cruise Control, \u043f\u0440\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 <code>num.concurrent.partition.movements.per.broker = 100<\/code> \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u0430\u0434\u0430\u0442\u044c. \u041f\u0440\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0438 \u043e\u0431\u044a\u0451\u043c\u0430 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c\u044b\u0445 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u043d\u0430 50% ZooKeeper \u043d\u0430\u0447\u0430\u043b \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f, \u0438 \u043f\u0435\u0440\u0435\u0432\u044b\u0431\u043e\u0440\u044b \u043b\u0438\u0434\u0435\u0440\u0430 \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u043b\u0438\u0441\u044c.\u00a0<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0441\u0440\u0430\u0437\u0443 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>num.concurrent.partition.movements.per.broker=50.<\/code>\u00a0<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u043e. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0432\u044b\u043a\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 Prod.\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cca\/0e5\/fde\/cca0e5fde273deb424b57e57a259a81b.png\" alt=\"\u041e\u0449\u0443\u0449\u0435\u043d\u0438\u044f \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u043e\u043b\u043d\u043e\u0439 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \" title=\"\u041e\u0449\u0443\u0449\u0435\u043d\u0438\u044f \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u043e\u043b\u043d\u043e\u0439 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \" width=\"1440\" height=\"304\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cca\/0e5\/fde\/cca0e5fde273deb424b57e57a259a81b.png\"\/><figcaption>\u041e\u0449\u0443\u0449\u0435\u043d\u0438\u044f \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u043e\u043b\u043d\u043e\u0439 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 <\/figcaption><\/figure>\n<p>\u0412\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u043c\u0438, \u0430 \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 Cruise Control \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u0441\u0435\u0431\u044f \u043a\u0430\u043a \u0434\u043e\u0431\u0440\u043e\u0442\u043d\u044b\u0439 \u0438\u0441\u043f\u0440\u0430\u0432\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442: \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u0440\u043e\u0448\u043b\u0430 \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a.\u00a0<\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u041e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e, \u0447\u0442\u043e \u0434\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430.\u00a0\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u044f \u043e\u0449\u0443\u0449\u0430\u043b \u0441\u0435\u0431\u044f \u043a\u0430\u043a \u043d\u0430 \u043a\u0430\u0440\u0443\u0441\u0435\u043b\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0432\u043e\u0440\u043e\u0442 \u0438 \u043f\u043e\u0434\u044a\u0451\u043c \u0441\u0443\u043b\u044f\u0442 \u0442\u0435\u0431\u0435 \u043a\u0443\u0447\u0443 \u043d\u043e\u0432\u044b\u0445 \u044d\u043c\u043e\u0446\u0438\u0439. \u041d\u043e, \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0432 \u044d\u0442\u043e\u0442 \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u0438 \u0442\u0435\u0440\u043d\u0438\u0441\u0442\u044b\u0439 \u043f\u0443\u0442\u044c, \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 Kafka \u043f\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u043a\u043d\u043e\u043f\u043a\u0438 \u0438 \u043d\u0435 \u0442\u0435\u0440\u044f\u044f \u043d\u0430 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043e\u0434\u0438\u043d-\u0434\u0432\u0430 \u0434\u043d\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u043e\u043f\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0441 \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0440\u0435\u043f\u043b\u0438\u043a. \u0410 \u0435\u0449\u0451 \u043e\u043d \u0443\u043c\u0435\u0435\u0442 \u0432\u0438\u0434\u0435\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c\u0443 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u043f\u043e \u043d\u043e\u0434\u0430\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u043e\u043f\u043e\u0432\u0435\u0449\u0430\u0442\u044c \u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u043c\u0451\u0440\u0442\u0432\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0438 \u0443\u0448\u0435\u0434\u0448\u0435\u0439 \u0432 \u043e\u0444\u043b\u0430\u0439\u043d \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438.\u00a0<\/p>\n<p>\u041d\u0438\u0436\u0435 \u044f \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u043d\u0430\u0448 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f Cruise Control.\u00a0<\/p>\n<h2>\u041f\u043b\u0430\u043d\u044b \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 <\/h2>\n<ul>\n<li>\n<p>\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e (\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 <em>Basic Auth<\/em>, \u0432 \u0441\u043a\u043e\u0440\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 <em>OAuth<\/em>).\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043b\u0435\u0447\u0435\u043d\u0438\u0435: \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u043f\u0430\u0432\u0448\u0435\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430\/\u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438, \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0435 <code>replication.factor<\/code> \u043a \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0443 (\u0434\u043b\u044f \u043d\u0430\u0441 <code>topic.replication.factor = 3<\/code><em>).<\/em>\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u044b Cruise Control \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f ZooKeeper.\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043e\u0442 LinkedIn \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 \u043d\u0451\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0435 \u0432\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 REST API, \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0432 Cruise Control.\u00a0<\/p>\n<\/li>\n<\/ul>\n<h2>\u041f\u043e\u043b\u044c\u0437\u0443\u044f\u0441\u044c \u0441\u043b\u0443\u0447\u0430\u0435\u043c, \u043f\u0435\u0440\u0435\u0434\u0430\u044e \u043f\u0440\u0438\u0432\u0435\u0442<\/h2>\n<p>\u0425\u043e\u0447\u0443 \u043f\u043e\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u0433, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0441\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0431\u044b \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438:\u00a0<\/p>\n<ul>\n<li>\n<p>\u0437\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f Cruise Control \u0432\u043d\u0443\u0442\u0440\u0438 Ozon \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044e \u041c\u0430\u043a\u0441\u0438\u043c\u0443 \u041f\u0438\u043a\u0443\u043b\u0435\u0432\u0443 \u0438 \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0443\u0440\u0443 \u0438 \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u043e\u0441\u0442\u044c\u00a0\u0442\u0435\u043a\u0441\u0442\u0430 \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0434\u0435\u0432\u0440\u0435\u043b\u0443 <a class=\"mention\" href=\"\/users\/golden_oar\">@golden_oar<\/a>;<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430 \u0441\u043b\u043e\u0432\u0430: \u00ab\u042f \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e. \u0413\u043e\u0442\u043e\u0432 \u0431\u044b\u0442\u044c \u0441\u043e\u0430\u0432\u0442\u043e\u0440\u043e\u043c \u0438 \u0432\u0441\u044f\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043c\u043e\u0447\u044c\u00bb \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0441\u043f\u0430\u0441\u0438\u0431\u043e <a class=\"mention\" href=\"\/users\/iktash\">@Iktash<\/a>.<\/p>\n<p>\u0417\u0430\u043e\u0434\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u043e\u0441\u043b\u0443\u0448\u0430\u0442\u044c \u043f\u043e\u0434\u043a\u0430\u0441\u0442 \u00ab\u041a\u043e\u0434\u0430 \u043a\u043e\u0434\u0430\u00bb, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u043e \u0442\u043e\u043c, \u043a\u0430\u043a <a href=\"https:\/\/podcast.ru\/e\/1GGchBYWaZ_\"><u>\u043c\u044b \u0433\u043e\u0442\u043e\u0432\u0438\u043c\u0441\u044f \u043a \u0445\u0430\u0439\u043b\u043e\u0430\u0434\u0443<\/u><\/a>.<\/p>\n<\/li>\n<\/ul>\n<h2>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f Cruise Control<\/h2>\n<details class=\"spoiler\">\n<summary>\u0424\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 cruisecontrol.properties <\/summary>\n<div class=\"spoiler__content\">\n<pre><code>#   # Copyright 2017 LinkedIn Corp. Licensed under the BSD 2-Clause License (the \"License\"). See License in the project root for license information.   #       # This is an example property file for Kafka Cruise Control. See com.linkedin.kafka.cruisecontrol.config.constants for more details.       # Configuration for the metadata client.   # =======================================       # The Kafka cluster to control.   bootstrap.servers={{ your_kafka_servers }}:{{ your_kafka_port }}       # The maximum interval in milliseconds between two metadata refreshes.   #metadata.max.age.ms=300000       # Client id for the Cruise Control. It is used for the metadata client.   #client.id=kafka-cruise-control       # The size of TCP send buffer bytes for the metadata client.   #send.buffer.bytes=131072       # The size of TCP receive buffer size for the metadata client.   #receive.buffer.bytes=131072       # The time to wait before disconnect an idle TCP connection.   #connections.max.idle.ms=540000       # The time to wait before reconnect to a given host.   #reconnect.backoff.ms=50       # The time to wait for a response from a host after sending a request.   #request.timeout.ms=30000       # The time to wait for broker logdir to respond after sending a request.   #logdir.response.timeout.ms=10000       # Configurations for the load monitor   # =======================================       # The metric sampler class   metric.sampler.class=com.linkedin.kafka.cruisecontrol.monitor.sampling.CruiseControlMetricsReporterSampler       # True if the sampling process allows CPU capacity estimation of brokers used for CPU utilization estimation.   sampling.allow.cpu.capacity.estimation=true       # Configurations for CruiseControlMetricsReporterSampler   metric.reporter.topic=__CruiseControlMetrics       # The sample store class name   sample.store.class=com.linkedin.kafka.cruisecontrol.monitor.sampling.KafkaSampleStore       # The config for the Kafka sample store to save the partition metric samples   partition.metric.sample.store.topic=__KafkaCruiseControlPartitionMetricSamples       # The config for the Kafka sample store to save the model training samples   broker.metric.sample.store.topic=__KafkaCruiseControlModelTrainingSamples       # The replication factor of Kafka metric sample store topic   sample.store.topic.replication.factor=3   partition.sample.store.topic.partition.count=10   broker.sample.store.topic.partition.count=10   partition.metric.sample.store.on.execution.topic.partition.count=10       # The config for the number of Kafka sample store consumer threads   num.sample.loading.threads=8       # The partition assignor class for the metric samplers   metric.sampler.partition.assignor.class=com.linkedin.kafka.cruisecontrol.monitor.sampling.DefaultMetricSamplerPartitionAssignor       # The metric sampling interval in milliseconds   metric.sampling.interval.ms=120000       # The partition metrics window size in milliseconds   partition.metrics.window.ms=300000       # The number of partition metric windows to keep in memory. Partition-load-history = num.partition.metrics.windows * partition.metrics.window.ms   num.partition.metrics.windows=5       # The minimum partition metric samples required for a partition in each window   min.samples.per.partition.metrics.window=1       # The broker metrics window size in milliseconds   broker.metrics.window.ms=300000       # The number of broker metric windows to keep in memory. Broker-load-history = num.broker.metrics.windows * broker.metrics.window.ms   num.broker.metrics.windows=20       # The minimum broker metric samples required for a partition in each window   min.samples.per.broker.metrics.window=1       # The configuration for the BrokerCapacityConfigFileResolver (supports JBOD, non-JBOD, and heterogeneous CPU core capacities)   capacity.config.file=config\/capacity.json       # Configurations for the analyzer   # =======================================       # The list of goals to optimize the Kafka cluster for with pre-computed proposals -- consider using RackAwareDistributionGoal instead of RackAwareGoal in clusters with partitions whose replication factor > number of racks   default.goals=com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.ReplicaCapacityGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.DiskCapacityGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkInboundCapacityGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkOutboundCapacityGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.CpuCapacityGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.ReplicaDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.PotentialNwOutGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.DiskUsageDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkInboundUsageDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkOutboundUsageDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.CpuUsageDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.TopicReplicaDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.LeaderReplicaDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.LeaderBytesInDistributionGoal       # The list of supported goals   goals=com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.ReplicaCapacityGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.DiskCapacityGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkInboundCapacityGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkOutboundCapacityGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.CpuCapacityGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.ReplicaDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.PotentialNwOutGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.DiskUsageDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkInboundUsageDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkOutboundUsageDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.CpuUsageDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.TopicReplicaDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.LeaderReplicaDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.LeaderBytesInDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.kafkaassigner.KafkaAssignerDiskUsageDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.kafkaassigner.KafkaAssignerEvenRackAwareGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.PreferredLeaderElectionGoal       # The list of supported intra-broker goals   intra.broker.goals=com.linkedin.kafka.cruisecontrol.analyzer.goals.IntraBrokerDiskCapacityGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.IntraBrokerDiskUsageDistributionGoal       # The list of supported hard goals -- consider using RackAwareDistributionGoal instead of RackAwareGoal in clusters with partitions whose replication factor > number of racks   hard.goals=com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.ReplicaCapacityGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.DiskCapacityGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkInboundCapacityGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkOutboundCapacityGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.CpuCapacityGoal       # The minimum percentage of well monitored partitions out of all the partitions   min.valid.partition.ratio=0.95       # The balance threshold for CPU   cpu.balance.threshold=1.1       # The balance threshold for disk   disk.balance.threshold=1.1       # The balance threshold for network inbound utilization   network.inbound.balance.threshold=1.1       # The balance threshold for network outbound utilization   network.outbound.balance.threshold=1.1       # The balance threshold for the replica count   replica.count.balance.threshold=1.1       # The capacity threshold for CPU in percentage   cpu.capacity.threshold=0.7       # The capacity threshold for disk in percentage   disk.capacity.threshold=0.8       # The capacity threshold for network inbound utilization in percentage   network.inbound.capacity.threshold=0.8       # The capacity threshold for network outbound utilization in percentage   network.outbound.capacity.threshold=0.8       # The threshold to define the cluster to be in a low CPU utilization state   cpu.low.utilization.threshold=0.0       # The threshold to define the cluster to be in a low disk utilization state   disk.low.utilization.threshold=0.0       # The threshold to define the cluster to be in a low network inbound utilization state   network.inbound.low.utilization.threshold=0.0       # The threshold to define the cluster to be in a low network outbound utilization state   network.outbound.low.utilization.threshold=0.0       # The metric anomaly percentile upper threshold   metric.anomaly.percentile.upper.threshold=90.0       # The metric anomaly percentile lower threshold   metric.anomaly.percentile.lower.threshold=10.0       # How often should the cached proposal be expired and recalculated if necessary   proposal.expiration.ms=60000       # The maximum number of replicas that can reside on a broker at any given time.   max.replicas.per.broker=100000       # The number of threads to use for proposal candidate precomputing.   num.proposal.precompute.threads=1       # the topics that should be excluded from the partition movement.   #topics.excluded.from.partition.movement       # The impact of having one level higher goal priority on the relative balancedness score.   #goal.balancedness.priority.weight       # The impact of strictness on the relative balancedness score.   #goal.balancedness.strictness.weight       # Configurations for the executor   # =======================================       # The zookeeper connect of the Kafka cluster   zookeeper.connect={{ your_zookeeper_servers }}:{{ your_zookeeper_port }}\/       # If true, appropriate zookeeper Client { .. } entry required in jaas file located at $base_dir\/config\/cruise_control_jaas.conf   zookeeper.security.enabled=false       # The max number of partitions to move in\/out on a given broker at a given time.   num.concurrent.partition.movements.per.broker=50   concurrency.adjuster.max.partition.movements.per.broker=500       # The upper bound of partitions to move in cluster at a given time   max.num.cluster.partition.movements=1250       # The max number of partitions to move between disks within a given broker at a given time.   num.concurrent.intra.broker.partition.movements=2       # The max number of leadership movement within the whole cluster at a given time.   num.concurrent.leader.movements=1000   concurrency.adjuster.min.leadership.movements=10   overprovisioned.max.replicas.per.broker=1500       # The replication throttle applied to replicas being moved, in bytes per second. If not specified, movements unthrottled by default.   default.replication.throttle=250000000       # The interval between two execution progress checks.   execution.progress.check.interval.ms=10000           # Configurations for anomaly detector   # =======================================       # The goal violation notifier class   anomaly.notifier.class=com.linkedin.kafka.cruisecontrol.detector.notifier.SelfHealingNotifier       # The metric anomaly finder class   metric.anomaly.finder.class=com.linkedin.kafka.cruisecontrol.detector.KafkaMetricAnomalyFinder       # The anomaly detection interval   #anomaly.detection.interval.ms=10000       # The goal violation to detect -- consider using RackAwareDistributionGoal instead of RackAwareGoal in clusters with partitions whose replication factor > number of racks   anomaly.detection.goals=com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.DiskCapacityGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.DiskUsageDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkOutboundUsageDistributionGoal,com.linkedin.kafka.cruisecontrol.analyzer.goals.LeaderBytesInDistributionGoal       # The interested metrics for metric anomaly analyzer.   metric.anomaly.analyzer.metrics=BROKER_PRODUCE_LOCAL_TIME_MS_50TH,BROKER_PRODUCE_LOCAL_TIME_MS_999TH,BROKER_CONSUMER_FETCH_LOCAL_TIME_MS_50TH,BROKER_CONSUMER_FETCH_LOCAL_TIME_MS_999TH,BROKER_FOLLOWER_FETCH_LOCAL_TIME_MS_50TH,BROKER_FOLLOWER_FETCH_LOCAL_TIME_MS_999TH,BROKER_LOG_FLUSH_TIME_MS_50TH,BROKER_LOG_FLUSH_TIME_MS_999TH       # True if recently demoted brokers are excluded from optimizations during self healing, false otherwise   self.healing.exclude.recently.demoted.brokers=true       # True if recently removed brokers are excluded from optimizations during self healing, false otherwise   self.healing.exclude.recently.removed.brokers=true       # The zk path to store failed broker information.   failed.brokers.zk.path=\/CruiseControlBrokerList       # Topic config provider class   topic.config.provider.class=com.linkedin.kafka.cruisecontrol.config.KafkaAdminTopicConfigProvider       # The cluster configurations for the TopicConfigProvider   cluster.configs.file=config\/clusterConfigs.json       # The maximum time in milliseconds to store the response and access details of a completed kafka monitoring user task.   completed.kafka.monitor.user.task.retention.time.ms=86400000       # The maximum time in milliseconds to store the response and access details of a completed cruise control monitoring user task.   completed.cruise.control.monitor.user.task.retention.time.ms=86400000       # The maximum time in milliseconds to store the response and access details of a completed kafka admin user task.   completed.kafka.admin.user.task.retention.time.ms=604800000       # The maximum time in milliseconds to store the response and access details of a completed cruise control admin user task.   completed.cruise.control.admin.user.task.retention.time.ms=604800000       # The fallback maximum time in milliseconds to store the response and access details of a completed user task.   completed.user.task.retention.time.ms=86400000       # The maximum time in milliseconds to retain the demotion history of brokers.   demotion.history.retention.time.ms=1209600000       # The maximum time in milliseconds to retain the removal history of brokers.   removal.history.retention.time.ms=1209600000       # The maximum number of completed kafka monitoring user tasks for which the response and access details will be cached.   max.cached.completed.kafka.monitor.user.tasks=20       # The maximum number of completed cruise control monitoring user tasks for which the response and access details will be cached.   max.cached.completed.cruise.control.monitor.user.tasks=20       # The maximum number of completed kafka admin user tasks for which the response and access details will be cached.   max.cached.completed.kafka.admin.user.tasks=30       # The maximum number of completed cruise control admin user tasks for which the response and access details will be cached.   max.cached.completed.cruise.control.admin.user.tasks=30       # The fallback maximum number of completed user tasks of certain type for which the response and access details will be cached.   max.cached.completed.user.tasks=25       # The maximum number of user tasks for concurrently running in async endpoints across all users.   max.active.user.tasks=5       # Enable self healing for all anomaly detectors, unless the particular anomaly detector is explicitly disabled   self.healing.enabled=false       # Enable self healing for broker failure detector   self.healing.broker.failure.enabled=false   broker.failure.alert.threshold.ms=1800000   broker.failure.self.healing.threshold.ms=3600000   broker.failure.detection.interval.ms=300000   kafka.broker.failure.detection.enable=false       # Enable self healing for goal violation detector   self.healing.goal.violation.enabled=false       # Enable self healing for metric anomaly detector   self.healing.metric.anomaly.enabled=false       # Enable self healing for disk failure detector   self.healing.disk.failure.enabled=false       # Enable self healing for topic anomaly detector   self.healing.topic.anomaly.enabled=false   topic.anomaly.finder.class=com.linkedin.kafka.cruisecontrol.detector.TopicReplicationFactorAnomalyFinder   self.healing.target.topic.replication.factor=3   topic.anomaly.detection.interval.ms=600000           # Enable self healing for maintenance event detector   #self.healing.maintenance.event.enabled=false       # The multiplier applied to the threshold of distribution goals used by goal.violation.detector.   #goal.violation.distribution.threshold.multiplier=2.50       # configurations for the webserver   # ================================       # HTTP listen port   webserver.http.port=9090       # HTTP listen address   webserver.http.address=0.0.0.0       # Whether CORS support is enabled for API or not   webserver.http.cors.enabled=false       # Value for Access-Control-Allow-Origin   webserver.http.cors.origin=http:\/\/localhost:8080\/       # Value for Access-Control-Request-Method   webserver.http.cors.allowmethods=OPTIONS,GET,POST       # Headers that should be exposed to the Browser (Webapp)   # This is a special header that is used by the   # User Tasks subsystem and should be explicitly   # Enabled when CORS mode is used as part of the   # Admin Interface   webserver.http.cors.exposeheaders=User-Task-ID       # REST API default prefix (dont forget the ending \/*)   webserver.api.urlprefix=\/kafkacruisecontrol\/*       # Location where the Cruise Control frontend is deployed   webserver.ui.diskpath=.\/cruise-control-ui\/dist\/       # URL path prefix for UI (dont forget the ending \/*)   webserver.ui.urlprefix=\/*       # Time After which request is converted to Async   webserver.request.maxBlockTimeMs=10000       # Default Session Expiry Period   webserver.session.maxExpiryTimeMs=60000       # Session cookie path   webserver.session.path=\/       # Server Access Logs   webserver.accesslog.enabled=true       # Configurations for servlet   # ==========================       # Enable two-step verification for processing POST requests.   two.step.verification.enabled=false       # The maximum time in milliseconds to retain the requests in two-step (verification) purgatory.   two.step.purgatory.retention.time.ms=1209600000       # The maximum number of requests in two-step (verification) purgatory.   two.step.purgatory.max.requests=25    <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/ozontech\/blog\/694030\/\"> https:\/\/habr.com\/ru\/company\/ozontech\/blog\/694030\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412 2022 \u0433\u043e\u0434\u0443<em> <\/em>\u0438\u0441\u043a\u0443\u0448\u0451\u043d\u043d\u043e\u0433\u043e \u0445\u0430\u0431\u0440\u0430\u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u0443\u0436\u0435 \u043d\u0435 \u0443\u0434\u0438\u0432\u0438\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c Kafka. \u041d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043a\u0443\u0447\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: <a href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/550934\/\"><u>\u0442\u0443\u0442<\/u><\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/beeline\/blog\/674328\/\"><u>\u0442\u0443\u0442<\/u><\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/avito\/blog\/465315\/\"><u>\u0442\u0443\u0442<\/u><\/a> \u0438 <a href=\"https:\/\/habr.com\/ru\/company\/crystal_service\/blog\/669974\/\"><u>\u0442\u0443\u0442<\/u><\/a>.\u00a0\u0410 \u0432\u043e\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0445, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0432 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0443 Kafka, \u0435\u0449\u0451 \u043d\u0435 \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e. \u00a0<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u0442\u044b\u0441\u044f\u0447\u0438 \u0442\u043e\u043f\u0438\u043a\u043e\u0432 \u0438 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u0445, \u0442\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0435\u0449\u0451 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u041d\u043e \u0433\u0434\u0435-\u0442\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0443 \u0440\u0435\u043f\u043b\u0438\u043a \u0441 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0440\u0443\u0442\u0438\u043d\u043e\u0439. \u0410 \u043f\u0440\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0438 \u043e\u0431\u044a\u0451\u043c\u043e\u0432 \u0431\u0435\u0437 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0443\u0436\u0435 \u043d\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0438\u0441\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0432 \u044d\u0442\u043e\u043c \u043f\u043e\u043c\u043e\u0447\u044c.\u00a0<\/p>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u043d\u0430\u0448\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0435\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 Kafka Cruise Control \u043e\u0442 LinkedIn. \u041d\u0430\u0448 \u043f\u0443\u0442\u044c \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043d\u0430 \u043d\u0430\u0448\u0438\u0445 \u043e\u0431\u044a\u0451\u043c\u0430\u0445 \u0431\u044b\u043b \u0442\u0435\u0440\u043d\u0438\u0441\u0442, \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c, \u043f\u043e\u0447\u0442\u0438 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u043e\u043c. \u0410 \u0435\u0441\u043b\u0438 \u0432\u044b \u0434\u0443\u043c\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e Kafka-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432, \u0442\u043e, \u0443\u0432\u0435\u0440\u0435\u043d, \u043f\u043e\u0447\u0435\u0440\u043f\u043d\u0451\u0442\u0435 \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435.\u00a0<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<h2>\u041a\u0430\u043a \u0443 \u043d\u0430\u0441 \u0432\u0441\u0451 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e <\/h2>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c, \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e \u043d\u0430\u0441. \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u042e\u0440\u0438\u0439, \u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0432 Ozon.\u00a0<\/p>\n<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u2014 \u044d\u0442\u043e Apache Kafka. \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043c\u044b \u0440\u0435\u0448\u0430\u0435\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u043f\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044e <em>Kafka as a service<\/em>. \u0412 \u044d\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u043c\u044b \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0438\u0434\u0435\u044e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438 \u2014 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u044d\u0442\u043e \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439 \u0440\u0430\u0437\u0443\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0442\u044c \u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u0445 \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u043f\u043b\u0438\u043a, \u0442\u043e\u043d\u043a\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u043e\u043f\u0438\u043a\u0430 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kafka. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0435\u043c\u0443 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u0432\u044b\u0431\u0438\u0440\u0430\u044f \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043d\u0430 \u043f\u043e\u0440\u0442\u0430\u043b\u0435, \u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0442\u043e\u043f\u0438\u043a\u0438 \u043b\u044e\u0431\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043b\u044e\u0431\u043e\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430 \u0438 \u0432\u044b\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u0441 \u043d\u0443\u0436\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e.\u00a0\u00a0<\/p>\n<p>\u041a\u0430\u043a \u0438 \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0445, \u0432 Ozon \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0440\u0451\u0445\u0437\u0432\u0435\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439:\u00a0<\/p>\n<ul>\n<li>\n<p>Dev (\u043c\u0430\u043b\u044b\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u043c\u0430\u043b\u044b\u0435 \u043e\u0431\u044a\u0451\u043c\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0444\u0438\u0447);\u00a0\u00a0<\/p>\n<\/li>\n<li>\n<p>Stage (\u043e\u0431\u044a\u0451\u043c\u044b \u0432 \u0440\u0430\u0437\u044b \u0431\u043e\u043b\u044c\u0448\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u0442\u0435\u0441\u0442\u043e\u0432);\u00a0<\/p>\n<\/li>\n<li>\n<p>Prod (\u0434\u0443\u043c\u0430\u044e, \u0442\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c).\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u0421 \u0447\u0435\u043c \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0434\u0435\u043b\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c. \u041a\u043b\u0430\u0441\u0442\u0435\u0440 Apache Kafka \u0432 Ozon \u2014 \u044d\u0442\u043e:\u00a0<\/p>\n<ul>\n<li>\n<p>\u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044f Apache Kafka 2.7.1 \u0441 ZooKeeper 3.6.3;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0431\u0440\u043e\u043a\u0435\u0440\u044b \u043d\u0430 \u0436\u0435\u043b\u0435\u0437\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0447\u0435\u0442\u044b\u0440\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kafka-\u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u0435\u043c\u044f \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u043c\u0438;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0431\u043e\u043b\u044c\u0448\u0435 70 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0431\u043e\u043b\u044c\u0448\u0435 9400 \u0442\u043e\u043f\u0438\u043a\u043e\u0432;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0442\u044b\u0441\u044f\u0447 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0442\u0435\u0440\u0430\u0431\u0430\u0439\u0442\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 Kafka.\u00a0<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><figcaption>\u0422\u0438\u043f\u043e\u0432\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0434 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u0435\u043c\u044f \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u043c\u0438 <\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0441\u0445\u0435\u043c\u044b, \u0432 \u043e\u0434\u0438\u043d \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0432\u0445\u043e\u0434\u0438\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u0445. \u0418 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043d\u0438 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445. \u041d\u0430\u043c \u0432\u0430\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u0436\u0434\u0430\u044f \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u044f \u0438\u043c\u0435\u043b\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u043f\u043b\u0438\u043a \u2014 \u0437\u0430 \u0441\u0447\u0451\u0442 \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0438 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0431\u043e\u0435\u0432. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u0443 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e:\u00a0<\/p>\n<ul>\n<li>\n<p>\u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0438\u0441\u043a\u043e\u0432;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0437\u0430\u043f\u0438\u0441\u0438\/\u0447\u0442\u0435\u043d\u0438\u044f (\u0430 \u044d\u0442\u043e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 \u0441\u0435\u0442\u044c, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u043f\u0430\u043c\u044f\u0442\u044c).\u00a0\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u043f\u043b\u0438\u043a \u043c\u0435\u0436\u0434\u0443 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c\u0438 \u043c\u044b \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u043e\u0439. \u041f\u0435\u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u2014 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0440\u0443\u0434\u043e\u0451\u043c\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043b\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044d\u0442\u043e \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u043e \u0441\u043a\u0443\u0447\u043d\u0430\u044f \u0438 \u043c\u043e\u043d\u043e\u0442\u043e\u043d\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430, \u0435\u0441\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0451 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e. \u00ab\u0410 \u0437\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u043f\u0435\u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u044b\u0432\u0430\u0442\u044c?\u00bb \u2014 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u0432\u044b. \u0412\u0435\u0434\u044c \u043c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u00ab\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u00bb. \u041d\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u0432\u0441\u0451 \u043d\u0435 \u0442\u0430\u043a \u0440\u0430\u0434\u0443\u0436\u043d\u043e: \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u0438\u0437 \u0441\u0442\u0440\u043e\u044f, \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u0442\u043e\u043f\u0438\u043a\u0438 \u0438 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438, \u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 \u043d\u0438\u0445 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u0443\u0436\u0435 \u043e \u0442\u0430\u043a\u0438\u0445 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445, \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0435\u0437\u0434 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430 \u0438\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e.\u00a0<\/p>\n<p>\u041f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c \u044f \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 Apache Kafka. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f \u0442\u0435\u043c, \u0443 \u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b \u0435\u0449\u0451 \u043d\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u0438 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430.\u00a0<\/p>\n<details class=\"spoiler\">\n<summary>\u0411\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Kafka-tools<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">echo '{    \"version\": 1,    \"topics\": [' > kafka_topics.json  \/opt\/kafka\/bin\/kafka-topics.sh \\   --bootstrap-server {{ KAFKA_BROKER_ADDRESS }}:{{ KAFKA_BROKER_PORT }} \\   --list | awk '{print \"{\\042topic\\042:\\042\"$1\"\\042},\"}' >> kafka_topics.json   echo '  ]  }' >> kafka_topics.json <\/code><\/pre>\n<p>\u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0432 \u043a\u043e\u043d\u0446\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u0431\u043b\u043e\u043a\u043e\u043c topic \u0441\u0438\u043c\u0432\u043e\u043b \u201c,\u201d \u0442\u0430\u043a \u043a\u0430\u043a <em>kafka-reassign-partitions.sh<\/em> \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0444\u0430\u0439\u043b\u044b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 JSON.\u00a0<\/p>\n<pre><code class=\"bash\">\/opt\/kafka\/bin\/kafka-reassign-partitions.sh \\   --bootstrap-server {{ KAFKA_BROKER_ADDRESS }}:{{ KAFKA_BROKER_PORT }} \\   --topics-to-move-json-file kafka_topics.json \\   --broker-list \"1007,1008,1009\" \\   --generate > kafka_topics_reassignment.json <\/code><\/pre>\n<p>\u0412 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u0444\u0430\u0439\u043b\u0435 <em>kafka_topics_reassignment.json<\/em> \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0431\u043b\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438. \u041d\u043e \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u044d\u0442\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0435\u0440\u043d\u044b.\u00a0<\/p>\n<pre><code class=\"bash\">tail -n 1 kafka_topics_reassignment.json > kafka_topics_reassignment_proposal.json <\/code><\/pre>\n<p>\u0423\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d \u0432 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435.\u00a0<\/p>\n<pre><code class=\"bash\">\/opt\/kafka\/bin\/kafka-reassign-partitions.sh \\   --bootstrap-server {{ KAFKA_BROKER_ADDRESS }}:{{ KAFKA_BROKER_PORT }} \\   --reassignment-json-file kafka_topics_reassignment_proposal.json \\   --verify <\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443.\u00a0<\/p>\n<pre><code class=\"bash\">\/opt\/kafka\/bin\/kafka-reassign-partitions.sh \\   --bootstrap-server {{ KAFKA_BROKER_ADDRESS }}:{{ KAFKA_BROKER_PORT }} \\   --reassignment-json-file kafka_topics_reassignment_proposal.json \\   --execute <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<h2>\u0412\u044b\u0431\u043e\u0440 \u0440\u0435\u0448\u0435\u043d\u0438\u044f <\/h2>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u0441\u0442\u043e\u044f\u043b\u0430, \u2014 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u043d\u044f\u0442\u0438\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u0435\u043f\u043b\u0438\u043a \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u0445 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u0441\u0442\u0440\u043e\u044f Kafka-\u0431\u0440\u043e\u043a\u0435\u0440\u0430). \u0427\u0435\u043c \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0435\u0435 \u0442\u043e\u043f\u0438\u043a, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0435\u043f\u043b\u0438\u043a \u0443 \u043d\u0435\u0433\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c. \u0423 \u043d\u0430\u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0442\u043e\u043f\u0438\u043a\u043e\u0432 \u0438\u043c\u0435\u044e\u0442 \u0442\u0440\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043f\u0440\u0438 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0434\u0432\u0443\u0445 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0445. \u041f\u0440\u0438 \u0448\u0442\u0430\u0442\u043d\u043e\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438\u043b\u0438 \u0435\u0433\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0438 \u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.\u00a0<\/p>\n<p>\u041e\u0441\u043e\u0431\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043c\u044b \u0443\u0434\u0435\u043b\u044f\u043b\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043f\u043e\u043b\u043e\u0441\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044f \u0441\u0435\u0442\u0438. \u0422\u043e \u0435\u0441\u0442\u044c \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0441\u0443 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 Cruise Control (\u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435) \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b: CPU, RAM, \u0447\u0442\u0435\u043d\u0438\u0435 \u0441 \u0434\u0438\u0441\u043a\u043e\u0432 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0430 \u043d\u0438\u0445.\u00a0\u00a0<\/p>\n<p>\u0410 \u0435\u0449\u0451 \u043d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u0445. \u0422\u043e\u0433\u0434\u0430 \u043f\u0440\u0438 \u043f\u043e\u043b\u043d\u043e\u043c \u0432\u044b\u0445\u043e\u0434\u0435 \u0438\u0437 \u0441\u0442\u0440\u043e\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043d\u0438\u0445 \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Kafka \u0431\u0435\u0437 \u0434\u0435\u0433\u0440\u0430\u0434\u0430\u0446\u0438\u0438.\u00a0<\/p>\n<p>\u0421 \u0442\u0430\u043a\u0438\u043c\u0438 \u0432\u0432\u043e\u0434\u043d\u044b\u043c\u0438 \u043c\u044b \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043b\u0438 \u043a \u043f\u043e\u0434\u0431\u043e\u0440\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043e\u0442\u0441\u0435\u0432\u0430 \u0443 \u043d\u0430\u0441 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u044f\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0438\u0437\u0443\u0447\u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e.\u00a0<\/p>\n<p>\u0418\u0437 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0443\u0436\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a\u0430\u043a\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438. \u041d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043a\u0440\u0430\u0442\u043a\u043e \u043f\u0440\u043e\u0439\u0434\u0451\u043c\u0441\u044f, \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043e\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445.\u00a0<\/p>\n<h3>Confluent Rebalancer <\/h3>\n<p>\u041e\u0434\u043d\u0430 \u0438\u0437 \u0443\u0442\u0438\u043b\u0438\u0442, \u0432\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 Confluent Hub (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0438 \u0431\u0435\u0437 \u0435\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438). \u041e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0431\u043e\u0433\u0430\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0435\u0434\u0438\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c\u044b\u0445 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 (\u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430).\u00a0<\/p>\n<p>\u0427\u0442\u043e \u043d\u0430\u043c \u043d\u0435 \u043f\u043e\u0434\u043e\u0448\u043b\u043e:\u00a0\u00a0<\/p>\n<ul>\n<li>\n<p>\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 Enterprise;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e Enterprise \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438.\u00a0<\/p>\n<\/li>\n<\/ul>\n<h3>Kafka Assigner <\/h3>\n<p>\u0412\u0445\u043e\u0434\u0438\u0442 \u0432 \u043d\u0430\u0431\u043e\u0440 \u0443\u0442\u0438\u043b\u0438\u0442 Kafka Tools \u043e\u0442 LinkedIn. \u0421\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 Python. Kafka Assigner \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0438\u0445. \u0415\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c\u044b\u0445 \u0437\u0430 \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439.\u00a0<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u043b\u0438:\u00a0<\/p>\n<ul>\n<li>\n<p>\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0435\u043b\u0438\u0437 \u0431\u044b\u043b \u0432 2018 \u0433\u043e\u0434\u0443;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0432 Cruise Control.\u00a0<\/p>\n<\/li>\n<\/ul>\n<h3>Orion <\/h3>\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Pinterest, \u0441\u0443\u0434\u044f \u043f\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0438\u043c\u0435\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u0432 Kafka, \u043d\u043e \u0432\u0441\u0451 \u0435\u0449\u0451 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u0442\u0430\u0434\u0438\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u0430 \u043a \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e. \u0414\u0430 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0441\u043b\u0430\u0431\u0430\u044f.\u00a0<\/p>\n<p>\u0427\u0442\u043e \u043d\u0430\u043c \u043d\u0435 \u043f\u043e\u0434\u043e\u0448\u043b\u043e:\u00a0<\/p>\n<ul>\n<li>\n<p>\u043d\u0435\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043d\u0430 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u044b\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0441\u043b\u0430\u0431\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Kafka.\u00a0<\/p>\n<\/li>\n<\/ul>\n<h3>\u041a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b <\/h3>\n<p>\u0423\u0442\u0438\u043b\u0438\u0442\u044b, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438 Apache Kafka, \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 \u043e\u0431\u0448\u0438\u0440\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u043d\u043e \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u0434\u043b\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u0423 \u043d\u0438\u0445 \u043d\u0435\u0442 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043e\u043d\u0438 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432. \u0415\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0443\u0447\u043d\u043e\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 JSON-\u0444\u0430\u0439\u043b\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c. \u041f\u0440\u0438\u043c\u0435\u0440 \u0443\u0441\u043b\u043e\u0432\u0438\u044f: \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c rack.id \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0439 \u0451\u043c\u043a\u043e\u0441\u0442\u0438 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443.\u00a0\u00a0<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\"><strong>\u041a\u0440\u0438\u0442\u0435\u0440\u0438\u0439<\/strong>\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/linkedin\/cruise-control\"><strong><u>Cruise Control<\/u><\/strong><\/a>\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/pinterest\/orion\"><strong><u>Orion<\/u><\/strong><\/a>\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/apache\/kafka\/tree\/trunk\/bin\"><strong><u>\u041a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b<\/u><\/strong><\/a>\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/linkedin\/kafka-tools\/wiki\/Kafka-Assigner\"><strong>Kafka Assigner<\/strong><\/a>\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/docs.confluent.io\/platform\/current\/kafka\/rebalancer\/index.html\"><strong><u>Confluent Rebalancer<\/u><\/strong><\/a>\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u0421\u0440\u0435\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">Java\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">Java\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">Shell + Java\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">Python\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">Shell + Java\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u041d\u0430\u043b\u0438\u0447\u0438\u0435 API \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">?\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u041d\u0430\u043b\u0438\u0447\u0438\u0435 UI \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u044b\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 Kafka-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 (CPU, RAM, HDD, NET)\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u043f\u043e \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u041f\u0435\u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c\u0438\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u0412\u044b\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u043d\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0444\u043b\u0430\u0439\u043d-\u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\/\u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u043e\u043f\u0438\u043a\u0430\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"248\" width=\"248\">\n<p align=\"left\">\u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0439 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\">+\u00a0<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0435\u0432 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u2014 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0435\u0439 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u043d\u0435\u0434\u0440\u0451\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f.\u00a0<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 Cruise Control. Confluent Rebalancer, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432 Confluent Cloud, \u043d\u0430\u043c \u0442\u043e\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c, \u043d\u043e \u043e\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 Enterprise, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432 \u0420\u043e\u0441\u0441\u0438\u0438 \u043d\u0435 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0441\u0442\u0438. \u0414\u0430 \u0438\u00a0\u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u043c\u0435\u043d\u0435\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0434\u043b\u044f \u043d\u0430\u0441.\u00a0<\/p>\n<h2>\u041e Kafka Cruise Control <\/h2>\n<h3>\u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0430 <\/h3>\n<p>LinkedIn, \u0431\u0443\u0434\u0443\u0447\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c Kafka, \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0435\u0451 \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. \u0421 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 Kafka, \u0438 \u043e\u0431\u044a\u0451\u043c \u043f\u0435\u0440\u0435\u0433\u043e\u043d\u044f\u0435\u043c\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0451 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439.\u00a0<\/p>\n<p>\u0418\u043d\u0436\u0435\u043d\u0435\u0440\u044b LinkedIn <a href=\"https:\/\/engineering.linkedin.com\/blog\/2019\/02\/introducing-kafka-cruise-control-frontend\"><u>\u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442<\/u><\/a> \u0442\u0430\u043a\u0438\u0435 \u0446\u0438\u0444\u0440\u044b \u043f\u043e \u0441\u0432\u043e\u0438\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u044b\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c \u043d\u0430 \u0444\u0435\u0432\u0440\u0430\u043b\u044c 2019 \u0433\u043e\u0434\u0430:\u00a0<\/p>\n<ul>\n<li>\n<p>4,5 \u0442\u0440\u043b\u043d \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0434\u0435\u043d\u044c;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u043e\u043a\u043e\u043b\u043e 2000 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432.\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-340272","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/340272","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=340272"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/340272\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=340272"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=340272"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=340272"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}