Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Протокол интернет-кэша (ICP) — это протокол на основе UDP, используемый для координации работы веб-кэшей. Он предназначен для определения наиболее подходящего расположения для получения запрошенного объекта, когда на одном узле используется несколько кэшей. Задача ICP — максимально эффективно использовать кэши и минимизировать количество запросов к исходному серверу.
The Internet Cache Protocol (ICP) is a UDP based protocol used for coordinating web caches. Its purpose is to find out the most appropriate location to retrieve a requested object in the situation where multiple caches are in use at a single site. The function of ICP is to use the caches as efficiently as possible, and to minimize the number of remote requests to the originating server.
Операция
Иерархически, запрошенный кэш может быть родительским или соседним. Родительские кэши обычно расположены ближе к интернет-соединению, чем дочерние. Если дочерний кэш не может найти объект, запрос обычно отправляется родительскому кэшу, который извлекает, кэширует и передает запрос дальше. Соседние кэши – это кэши равного иерархического уровня, предназначенные для распределения нагрузки между собой. Когда запрос поступает в один из кэшей в кластере соседних кэшей, для поиска запрашиваемого объекта используется протокол ICP. Если объект найден у одного из соседей, он обычно передается оттуда, а не запрашивается с исходного сервера. Это часто называют "почти попаданием" – объект не найден в кэше ("промах"), но загружается из ближайшего кэша, а не с удаленного сервера. Протокол ICP был разработан как легковесный, чтобы минимизировать время задержки между кэшами. Он предназначен для ненадежных, но быстрых соединений. Такой подход может уменьшить количество обращений к серверу и предотвратить хранение нескольких копий данных, но может привести к увеличению межкэшного трафика, что может замедлить работу системы. Протокол ICP описан в RFC 2186, а его применение к иерархическому веб-кэшированию – в RFC 2187.
Hierarchically, a queried cache can either be a parent or a sibling. Parents usually sit closer to the internet connection than the child. If a child cache cannot find an object, the query usually will be sent to the parent cache, which will fetch, cache, and pass on the request. Siblings are caches of equal hierarchical status, whose purpose is to distribute the load amongst the siblings. When a request comes into one cache in a cluster of siblings, ICP is used to query the siblings for the object being requested. If the sibling has the object, it will usually be transferred from there, instead of being queried from the original server. This is often called a "near miss" — the object is not found in the cache (a “miss”) but is loaded from a nearby cache, instead of from a remote server. The ICP protocol was designed to be lightweight in order to minimize round trip time between caches. It is intended for unreliable but quick connections. This approach can reduce numbers of server retrievals, and also prevent the storage of multiple copies of an instance of data, but leads to the potential drawback of increased intercache communication, which can slow the system down. The ICP protocol is described in RFC 2186, its application to hierarchical web caching in RFC 2187.