Говоря о некоторых принципах высокой параллелизма и дизайна (JAVA)

Java задняя часть база данных

предисловие

При проектировании системы, поскольку场景,时间而异,资源配备Невозможно сразу разработать идеальный дизайн, решить основные проблемы с ограниченными ресурсами, предсказать и обнаружить проблемы, которые могут возникнуть в будущем, и решать их постепенно, поэтому говорят, что系统设计是一个不断迭代的过程, не переусердствуйте, развивайтесь и совершенствуйтесь после итерации.

О параллелизме?Концептуально параллелизм, в том числе и параллелизм, предназначен для повышения эффективности, как для выполнения большего количества задач за кратчайшее время. Включая текущий Double Eleven, Double Twelve и т. д., сколько заказов выполняется за одну секунду, они будут включать параллелизм.Параллелизм и параллелизм 有大神关于两者的阐述:“并发关乎结构,并行关乎执行”

  • 并发: Обработка нескольких задач в разное время, по очереди используется один ЦП. Например, сходите в ванную и вернитесь, чтобы поесть, пока вы едите.
  • 平行: одновременная обработка нескольких задач и выполнение нескольких ЦП. Допустим, вы ходите в туалет во время еды.

Тип параллелизма

  • 计算密集型: требует много вычислительных ресурсов ЦП. Для интенсивного типа это полностью зависит от количества ядер ЦП. Избегайте чрезмерного переключения контекста потока, чтобы в полной мере использовать преимущества. Идеальное решение: JDK1.8 добавляет параллельные вычисления, идеальное количество потоков = количество ядер ЦП * 2
  • IO密集型: Это включает в себя много сетевой передачи. Не только это, но и взаимодействие с базой данных и кешем также включает ввод-вывод. Как только ввод-вывод произойдет, он войдет в состояние ожидания. Когда ввод-вывод завершится и данные будут готовы, он продолжится выполнить. Идеальное решение: количество потоков = количество ядер ЦП/(1-коэффициент блокировки), этот коэффициент блокировки обычно составляет от 0,8 до 0,9.

Принцип высокой параллелизма

  1. **无状态: ** Без сохранения состояния означает, что нет необходимости выполнять постоянные операции. Наличие состояния будет включать синхронизацию данных, использование памяти и полосы пропускания, а также операции блокировки, что повлияет на быстрое расширение.
  2. **粒度化: ** Независимо от того, разделены ли чтение и запись, или служба приложений должна контролировать зависимости между ними, децентрализовать запросы для повышения эффективности параллелизма и более четко управлять ими.
  3. **场景化: ** Выберите правильную технологию для правильного сценария (очередь сообщений, неоднородность данных, кэш-память, параллелизм).
    • 消息队列: отделить некоторые службы, которые не нужно вызывать синхронно, или подписаться на некоторые соответствующие изменения, а также уменьшить пики/буферы трафика, а в некоторых сценариях будут повторяющиеся сообщения (недостатки), вы можете выполнять защиту от дублирования и корректуру на бизнес-уровне.
      流量削峰/缓冲
      RDBMS фокусируется на ACID, а NOSQL фокусируется на CAP и BASE, обычно жертвуя строгой согласованностью и обеспечивая конечную согласованность.
      BASE
    • 数据异构: Все мы знаем, что система состоит из данных, и место хранения данных и полученная среда разные, и скорость тоже разная. Одна таблица определенно быстрее, чем связанная таблица, а доступ к памяти определенно быстрее, чем доступ к диску, как и в предыдущем случае.статьяЕсть цитата, которая лично мне очень нравится:时间换空间,空间换时间. Следовательно, он может быть разработан в соответствии с реальной сценой и бизнесом, в том числе жертвовать частью ресурсов в соответствии с весом данных для повышения эффективности.Например, совместная таблица может учитывать избыточность данных или получение ключевых данных. можно комбинировать и хранить.
    • 缓存银弹: Cache — это специальное оружие против трафика для сервисов чтения.
      缓存
    • 并发化: Теория параллелизма на самом деле очень проста: данные без зависимостей собираются параллельно. Это может быть непросто понять, например: B зависит от A, а C не зависит от D от B, тогда лучший способ — получить A и C параллельно, затем получить B, а затем D.

Прикрепленный пример оформления:

高并发

Эпилог

О некоторых подробных примерах на диаграмме примеров я буду постепенно добавлять в будущем.Говорить об этом - это просто говорить об этом, и должны быть принципы (не бейте меня~~~)!
Картинки внутри - карты разумаXmindсделанный.
рекомендовать:Говоря о некоторых принципах высокой доступности и дизайна (JAVA)
личный блог~
короткая книга~