настроить
Каждый технический специалист знаком с концепцией конфигурации, можно сказать, что система, которая не предоставляет несколько параметров конфигурации, стесняется выходить в интернет и здороваться с другими системами.
Суть в том, что мы, люди, не можем все контролировать и предсказывать, и это отображено в программном поле, нам всегда нужно резервировать какие-то линии управления для каких-то функциональных характеристик системы, чтобы мы могли искусственно возиться с ними, когда нам это нужно в Таким образом, головка потока управляет поведенческими характеристиками системы, что я называю «динамической настройкой положения системы во время полета».
статическая конфигурация
В нашей системе есть некоторые внешние зависимости.Эти зависимости не связаны с бизнесом, но неясны на этапе разработки.Мы обычно настраиваем их в файлах свойств, таких как URL-адрес базы данных, имя учетной записи, пароль и т. д. Эти элементы конфигурации в основном не будут легко изменены, и конфигурация тоже проста, в основном все строки, поэтому они называются статическими конфигурациями
Так называемая статическая конфигурация — это конфигурация, которая настраивается за один раз до запуска программы, вступает в силу за один раз при запуске и, как правило, не изменяется в течение периода работы программы.
В частности, включают:
- Конфигурация, связанная с окружающей средой
Некоторые конфигурации зависят от среды, и конфигурация отличается для каждой среды, например, конфигурация строки подключения для баз данных, промежуточного программного обеспечения и других служб. Эти конфигурации настраиваются одновременно, и время выполнения, как правило, не изменяется.
- Конфигурация безопасности
Некоторые конфигурации связаны с безопасностью, такие как имя пользователя, пароль, токен доступа, сертификат лицензии и т. д. Они также настраиваются одновременно и обычно остаются неизменными в течение периода работы. Из соображений безопасности связанная информация обычно должна быть зашифрована и сохранена, а доступ к конфигурации требует контроля разрешений.
Динамическая конфигурация
При развитии бизнеса мы будем заранее предвидеть неопределенность бизнеса и генерировать сложные элементы бизнес-конфигурации.Простые типы могут быть числами, символами, а сложные могут быть массивами, картами и их смешанными организационными формами. , в связи с требованиями бизнеса , его нужно будет часто менять. Этот тип элемента конфигурации называется динамической конфигурацией.
Так называемая динамическая конфигурация — это конфигурация, которую можно динамически изменять по мере необходимости во время выполнения программы. Динамическая конфигурация делает настройку поведения и функциональности приложений более гибкой и является передовым методом непрерывной доставки и DevOps.
- 2.1 Конфигурация приложения
Конфигурация, связанная с приложением, такая как время ожидания запроса службы, размер пула потоков и очереди, время истечения срока действия кэша, емкость пула соединений с базой данных, уровень вывода журнала, пороговое значение прерывателя цепи ограничения тока, черный и белый список безопасности службы и т. д. Общая разработка или эксплуатация и техническое обслуживание будут корректировать эти конфигурации в соответствии с фактической работой приложения.
- 2.2 Бизнес-конфигурация
Некоторые настройки, связанные с бизнесом, такие как правила продвижения, сумма кредита, процентная ставка и другие бизнес-параметры, параметры A/B-тестирования и т. д. Общие операторы продукта или разработчики будут динамически корректировать эти параметры в соответствии с фактическими потребностями бизнеса.
- 2.3 Функциональный переключатель
Он также называется Feature Flag/Toggle/Switch на английском языке, Простой имеет только два значения, true и false, а сложный может быть многозначным параметром. Переключение функций — это передовая практика DevOps.Существует множество сценариев работы и обслуживания приложений, таких как сине-зеленое развертывание, переключение в оттенках серого, переключение на более раннюю версию, переключение активный/резервный, переключение миграции базы данных и т. д. Функциональные переключатели широко используются в зарубежных интернет-компаниях, но не нашли широкого применения в Китае, поэтому в следующем разделе я приведу некоторые расширенные сценарии применения функциональных переключателей.
Зачем нужен центр конфигурации?
В автономную эпоху мы все используем файлы конфигурации для хранения элементов конфигурации. Файл конфигурации, как правило, представляет собой набор элементов конфигурации или набор конфигурации.Система делится на логические модули и может иметь один или несколько файлов конфигурации.
В эпоху централизованной открытости файлов конфигурации в основном достаточно, потому что именно здесь управление конфигурацией обычно не становится большой проблемой. Если вы хотите изменить конфигурацию, войдите в систему на этом компьютере, войдите в систему на этом производственном компьютере, настройте файл конфигурации, а затем перезагрузите его, это не большая проблема.
В распределенной системе одновременное создание, выпуск и подключение к сети — очень и очень трудоемкий процесс, а не перезапуск одной машины и одного процесса, как в автономную эру.
Своевременность
В распределенной системе это включает в себя распространение пакета программного обеспечения (например, войны) на, возможно, более чем несколько тысяч машин, а затем перезапуск процессов приложений на этих тысячах машин один за другим, одно приложение на более чем 2000 машин одновременно. время Я полагаю, что все знают, сколько времени потребуется для завершения процесса выпуска, поэтому с точки зрения своевременности центр конфигурации является обязательным.
Единое управление
Распространяется на тысячи машин, которые могут гарантировать, что конфигурация будет согласованной тысячи раз, и что никакая ручная ошибка не приведет к ошибкам в изменении файлов, поэтому есть приложение, которое управляет и управляет конфигурацией унифицированным образом. когда другим приложениям необходимо изменить локальную конфигурацию, загрузите ее из центра конфигурации, затем замените конфигурацию, а затем опубликуйте ее повторно, чтобы гарантировать, что конфигурация на всех машинах будет одинаковой.
Три принципа дистрибуции
При разработке и реализации технологии распределенных вычислений теория CAP является важным руководящим принципом, и ее основное содержание заключается в следующем:
1. «С» относится к консистентности, то есть, когда процесс (процесс) изменяет определенные данные, другие процессы читают эти данные и получают обновленные данные, но не все системы могут это сделать в этот момент. Например, в некоторых системах, которые строго не требуют согласованности, данные, полученные в результате последующего процесса, могут по-прежнему быть данными до модификации, или для получения измененных данных требуется определенный период времени, что называется «слабой согласованностью». , самый классический Приложение системы DNS. Когда пользователь изменяет конфигурацию DNS, часто она не обновляется во всей сети сразу, и должна быть задержка.Эта задержка называется «окном несогласованности», и ее продолжительность зависит от загрузки системы, количества резервирований и другие факторы. Но для некоторых систем после записи данные должны быть изменены для последующего чтения, например информация о банковском счете, что называется «сильной согласованностью».
2. «А» означает наличие. То есть система всегда может предоставлять пользователям непрерывные возможности обслуживания. Когда пользователь запрашивает запрос, система может дать ответ (успех или неудачу), а ответ приведен немедленно, а не ожидание других вещей, чтобы завершить до ответа. Если вам нужно дождаться чего-то завершения, прежде чем ответить, то «доступность» не существует.
3. «П» означает отказоустойчивость. Любая распределенная вычислительная система состоит из нескольких узлов. При нормальных обстоятельствах обмен данными между узлами является нормальным. Но в некоторых случаях связь между узлами разрывается, и это отключение становится «Разделением». В реализации распределенных вычислений разделение очень распространено, потому что узлы не могут выходить из строя навсегда, особенно для систем хранения данных, которые охватывают физические регионы, а отказоустойчивость может гарантировать, что, если только некоторые узлы в системе не могут выйти из строя, используются, связанные операции все еще могут быть завершены в обычном режиме.
Развивающийся центр конфигурации
После приведенного выше контента все знают, что должен быть центр конфигурации для унифицированного управления, и каждая конфигурация (каждая конфигурация имеет уникальный идентификатор конфигурации) добавляется, удаляется, модифицируется и проверяется через систему центра конфигурации. Чтобы различать конфигурации разных сред, один и тот же идентификатор конфигурации в каждой среде соответствует разным записям базы данных. Наконец, конфигурация сохраняется в базе данных mysql как ключ-значение.
1.
Может быть центр конфигурации, через который каждая конфигурация может быть добавлена, удалена, изменена и проверена.Конфигурация, наконец, сохраняется в базе данных mysql как ключ-значение, внешние службы настраиваются, и несколько машин развертываются для удовлетворения требований к производительности. . Приложение напрямую вызывает интерфейс, предоставленный центром конфигурации, для запроса конфигурации, что может привести к чрезмерной нагрузке на базу данных.В этом случае вы можете добавить кеш в центре конфигурации и каждый раз запрашивать кеш.В этом случае, каждый раз, когда вы запрашиваете, база данных не будет вызываться.Вы можете напрямую запрашивать кеш и изменять кеш каждый раз, когда вы меняете конфигурацию, что может обеспечить доступность и согласованность.
Во многих случаях это может в основном удовлетворить наши основные потребности в системе конфигурации, а добавление, удаление, изменение и проверка конфигурации могут допускать несогласованность данных в течение определенного периода времени.
В этой схеме, поскольку все конфигурации хранятся в централизованном кеше, у централизованного кеша также будет узкое место в производительности. Кроме того, каждый настроенный доступ должен инициировать запрос rpc (сетевой запрос), поэтому рассмотрите возможность введения локального кэша (localCache, например Ehcache) на стороне клиента.
2.
Вы можете использовать кеш на стороне сервера, почему вы не можете использовать кеш на стороне клиента?
Где находится кеш при кэшировании на стороне клиента?
Использование кеша на клиенте можно разделить на три типа: распределенный кеш, память и жесткий диск.
Но у всех трех есть свои плюсы и минусы.
Распределенный кеш. Тогда потребление сетевых ресурсов не экономится, но может обеспечить непротиворечивость считываемой приложением конфигурации.
Память Нет необходимости потреблять сетевые ресурсы, очень быстро, но перезапуск приведет к потере конфигурации
Жесткий диск Нет необходимости потреблять сетевые ресурсы, нет потери конфигурации, относительно медленнее
Учитывая фактор уменьшения сетевых запросов, введение локального кеша на стороне клиента, хотя память и жесткий диск могут сэкономить сетевые ресурсы, но и память, и жесткий диск имеют свои недостатки, то мы можем использовать формат памяти + жесткий диск для сохранять ресурсы на жестком диске, загружаемые в память после чтения с жесткого диска при каждой перезагрузке. Таким образом, может быть решена высокая доступность, высокая производительность и масштабируемость системы.
С точки зрения согласованности мы можем решить проблему сокращения кэша обновлений. Вы также можете уведомлять приложение об обновлениях конфигурации через центр конфигурации.Приложение получает последнюю конфигурацию из центра конфигурации, обновляет локальную конфигурацию и уведомляет приложение.
php и центр конфигурации
В отличие от таких приложений, как c#, Java, Go, Python, Node.JS и т. д., программы php не поддерживаютрезидентная память, каждый раз, когда php обрабатывает запрос, ресурс будет освобождаться, это означает, что если мы делаем запрос, нам нужно получить доступ к центру конфигурации для получения различной информации о конфигурации.
Поскольку центр конфигураций является внешней программой, каждый доступ представляет собой обмен данными между процессами; если для получения конфигурации требуется 1 мс, то сто конфигураций составляют 0,1 с; этоОгромное потенциальное влияние на производительность.
get_key
Когда функция вызывается, она автоматически переходит в центр конфигурации, чтобы получить новое значение и повторно кэшировать его.