мне 3 года, один годCRUD
десятилетний опытmarkdown
Программисты 👨🏻💻 известны как качественные игроки в Багувен круглый год
Первый канал, реализованный проектом Austin:Начните с отправки текстового сообщения
01. Введение в СМС
Во время представления проекта проект Остина был определеносновная функция:Отправить сообщение
На мой взгляд, SMS — это самый важный тип сообщений во всей платформе push-уведомлений (в конце концов, с ним связано множество важных бизнес-сценариев).Подумайте о сценариях, когда мы ежедневно используем приложение:
- код верификации: Важные сценарии, такие как вход в систему, регистрация, оплата и т. д.
- Класс уведомлений: информация о заказе пользователя, важная информация, уведомляющая пользователей, важная информация, уведомляющая продавцов и т. д.
- Маркетинг: операция отправляет маркетинговые текстовые сообщения в течение определенного времени, и показатели KPI, влияющие на бизнес, выполняются (но это относительно менее важно).
- …
(Представьте, что будет, если система зависнет на 10 минут)
Отправляйте SMS в платформе push-уведомленийлегче реализоватьтип сообщения, о котором я расскажу в этой статьепозвольте вам испытатьОтправить сообщениеЭто не так просто и легко сделать лучше, и может испытатьПочему мне нужно вводить так много промежуточного программного обеспечения, когда я представляю проект Austin?.
(Все это начинается с текстового сообщения)
02. Необходимая подготовка к отправке СМС
Прошло несколько дней с момента последней диаграммы архитектуры системы.Давайте сначала рассмотрим весь процесс нашей системы Austin.
Так как этоПервоначальная реализация, поэтому я сначала открываю интерфейс для прямого вызоваaustin-handler
модуль, покаaustin-handler
Логика, которая реализует отправку текстового сообщения под модулем, в порядке.
Мы должны отправлять текстовые сообщения, как правило, прямой доступПровайдер SMS-каналаДостаточно. Насколько я понимаю, процесс отправки текстовых сообщений выглядит следующим образом:
Буквально несколько дней назад в группе появился брат, который занимается сопутствующим бизнесом провайдера SMS-каналов в компании. Он сказал, что в интерфейсе параллелизм 20W QPS (ранее он занимался различными оптимизациями промежуточного программного обеспечения, чтобы избежать накопления сообщений), и когда он зашел, он понял, что отправка текстового сообщения будет проходить через очень много процессов (Я скопировал его оригинальные слова)
Теперь я знаю, у нас было текстовое сообщение, отправленное на телефон, после того, как я не знаю, сколько процессов, в том числе проверка контроля рисков, проверка черного списка, проверка ключевого слова, проверка отписки, проверка шаблона, проверьте учетную запись клиента, проверьте шлюз маршрутизации, канал, канал Проверьте, проверьте отчет о состоянии, проверки оператора. . . . . . .
Как правило, мы должны оценить, использовать ли для отправки определенного провайдера SMS-канала, есть два момента, которые следует учитывать:стоимость и вероятность успеха. Здесь должно быть легко понять.Провайдеров СМС-каналов много, и все они должны зарабатывать деньги.Как сторона доступа, мы должны экономить деньги (естественно, будет разница в цене). Если определенный провайдер канала дешевый и имеет высокий процент успеха, то, конечно, используйте его в качестве основного канала!
На этот раз я выбрал Tencent Cloud в качестве проекта austin.ПредварительныйПровайдер канала для отправки SMS-сообщений.
Причина моего выбора на этот раз очень проста: после того, как я вошел в продукт СМС, он дал мне 100 карт опыта для отправки СМС бесплатно (это должно быть у всех? Я не могу быть ребенком судьбы).
Я нашел много мелких партнеров, которые следят за моими темпами, и я, конечно, не могу сделать его учетную запись SMS и пароль общедоступными для всеобщего обозрения. Так что в этот раз вас может заинтересовать собственный опыт волнового аккаунта.
Проблемы**@Tencent CloudЗаплатите мне за рекламу.@Али КлаудВроде есть? (Но вход слишком сложно найти, вот и все)@HUAWEI CLOUD** Я еще не вошел в систему, чтобы испытать это, подождите меня!
Если вы хотите отправить текстовое сообщение или получить доступ к провайдеру канала текстовых сообщений, есть два важных момента:Шаблон SMSиСМС-подпись. не могу читать? Ничего страшного, в качестве примера возьму конкретное тестовое текстовое сообщение:
имеютСМС-подписьВы можете сообщить пользователю, кто мог отправить текстовое сообщение, сШаблон SMSВы можете отправлять спам-сообщения, чтобы вероятность значительно снизилась.
Некоторые люди могут спросить: если мне нужно иметь соответствующий шаблон для каждого текстового сообщения, которое я отправляю, не будет ли мне очень сложно его поддерживать? В конце концов, это пуш-платформа! Каждый раз, когда компании нужно отправить новую копию, нужно ли мне обращаться к соответствующему поставщику каналов, чтобы подать заявку на шаблон?
Я думал, что это нормально,Я не ожидал, что если вы компания, вы все еще можете говорить(🐶 Для обычных людей я его пока не говорю). Итак, может бытьУниверсальный шаблон СМСПрисутствие.
Но несмотря ни на что, провайдер СМС-канала все равно проверит различную логику (проверка все равно проверится, вы отправляете случайные сообщения, чтобы ограничить ток вашей учетной записи и настраиваете пробную ручную проверочную копию, так что выигрыш не стоит потери)
03. Реализация функции
Может быть два варианта вызова стороннего API:HTTP-вызовиВстроенный SDK(Если на стороне платформы есть SDK).
Раньше я обычно делал прямые вызовы HTTP, потому что тогда мой код не нуждался во встраивании чужих SDK (встраивание SDK означает, что будут введены другие зависимости). Поэтому я начал прямо с документа доступа, который он предоставил, и попытался использовать HTTP для доступа.
Что ж, у меня ушло больше двух дней, и я до сих пор не успешно подключился. Я больше не могу, если так будет продолжаться, люди, которые требуют большего, придут ко мне домой и постучат в дверь!
Слишком сложно использовать HTTP для проверки интерфейса Tencent Cloud! Оказалось егоПримечаниеЧтобы не пугать меня:
После двух ночей я был обескуражен и мог только скомпрометировать и использовать предоставленный ими SDK.В сочетании с автоматической генерацией кода Гага быстро преуспела (интересно, есть ли воины, которые использовали последнюю документацию API для использования HTTP-доступа к своим интерфейс)
Конкретный код выкладывать не буду, по практике все в конце статьи(читать оригинал), чтобы найти ссылку Gitee 🔗 просто взгляните.
Друзья, которые следят за проектом, могут получать свои собственные текстовые сообщения, пока они меняют информацию об учетной записи в файле конфигурации и вызывают интерфейс. (Это не должно быть большой проблемой, просто спросите в группе, если у вас есть какие-либо вопросы)
04. Почему Austin — это платформа для обмена сообщениями
Отправка SMS - это простое, что нужно сделать (как вы можете сделать вывод из длины статьи), и отправка сообщений из других каналов на самом деле довольно просты.По сутиТо есть API вызывает отправку интерфейса отправки.
Как общий проект после отправки сообщения нет продолжения, но как "платформа" этого далеко не достаточно.
4.1 Что делать, если не удается получить отзыв пользователя после вызова API отправки SMS?
Мы вызывали только интерфейс для отправки смс, а обратную информацию интерфейса не записывали (и сертификат не отправляли), а когда другие приходили его искать, мы были бесполезны (ничего не записывали, не ничего не знаю).
решение:нам нужноместо храненияЧтобы сохранить отправленные записи, также необходимо иметь интерфейс для извлечения и сохранения получения короткого сообщения, а также предоставлять соответствующие страницы в фоновом режиме для быстрого запроса.
4.2 Что делать, если зависает провайдер канала SMS?
Не думайте, что мы полагаемся на крупные компании, такие как Alibaba Cloud, Tencent Cloud или Huawei Cloud.Продукты, которые они предоставляют, ненадежны, и зависание — это нормально. Тогда, если мы полагаемся только на один канал SMS, и он зависает, это то же самое, как если бы мы зависли.
решение: SMS должно быть подключено к нескольким провайдерам каналов. Если интерфейс вызова не работает, вам нужно продолжать звонить другим провайдерам каналов. Поддержкадинамическое размещениеПоток провайдеров каналов (как только появится раннее предупреждение, напрямую переключите провайдеров каналов)
4.3 Сколько я потратил на SMS в этом месяце, как узнать?
По фону входящих смс есть соответствующая статистика, но если у нас большая сумма, то надо "сверять", исходя из нашихОтправка записей и квитанцийСтатистика и фоновая статистика СМС.
В конце концов, это все деньги, поэтому нельзя всем им доверять. Я столкнулся с тем, что счета другой стороны сильно отличаются от нашей собственной статистики, а позже мы обнаружили, что с их статистикой есть проблемы.
решение: Импортируйте данные отправки и получения SMS в Hive, запуская статистику скрипта Hive каждый месяц.
4.4 Есть ли сейчас большое количество смс-звонков?
Сторонние интерфейсы обычно имеют ограниченный поток, например, на официальном сайте Tencent Cloud для интерфейсов отправки установлено ограничение в 3000QPS.Нам нужно знать, как сейчас происходит отправка различных типов сообщений, является ли это операцией с ограниченным потоком. Если текущий лимит достигнут, можете ли вы сообщить деловой стороне, что текущий лимит срабатывает из-за чрезмерного объема отправки.
В системе есть полная система мониторинга, и вы не будете паниковать, когда вы знаете различные данные индикатора системы. (Легко найти проблему с мониторингом)
Если кто-то говорит вам, что ваша система находится внизу однажды, вы не потуможете на сервере, чтобы посмотреть на журналы, вы будете ли вы? Откройте монитор, чтобы увидеть, есть ли трафик. Если трафик ненормальный, вы можете увидеть его с первого взгляда.
решение: Мониторинг данных от вызова интерфейса до процесса доставки сообщения (в основном интерфейс QPS и количество отправленных людей)
4.5 Что делать, если деловая сторона случайно отправила сообщение дважды подряд?
Бизнес-сторона использовала его не по назначению и случайно нажала два раза подряд, если бы не ограничения, то отправили бы дважды. Только представьте, как бы вы себя чувствовали, если бы вы нажали код подтверждения и получили два одинаковых текстовых сообщения в одно мгновение?
решение: Поскольку платформа должна иметь этораскрыть все деталифункция (насколько это возможно, чтобы избежать несчастных случаев из-за ненадлежащего использования в бизнесе)
4.6 Кто отправил это текстовое сообщение?
Отзыв службы поддержки: пользователь получил текстовое сообщение (пользователь не понимает деталей конкретного текстового сообщения). Служба поддержки посмотрела на текстовое сообщение ошеломленными глазами: компания такая большая, и я не знаю, какая бизнес-группа отправила его. Теперь есть только текстовые сообщения, как быстро найти команду, которая отправила текстовые сообщения?
Нам нужно сделать так, чтобы все сообщения, проходящие через проект austin, имели «носитель» (короче говоря, шаблон). расположена.
"Отслеживаемость«Они полезны во многих случаях (например: вы предоставляете интерфейс HTTP, если вы не делаете никаких ограничений на бизнес, возможно, один день, вы хотите большие изменения в интерфейсе, но вы не знаете, кто вызывается, это будет , Головная боль)
решение: Установите "шаблон" для стороны доступа. Только с помощью шаблона можно отследить источник и отследить данные.Шаблоны являются краеугольным камнем платформы. (В следующей статье, когда я построю таблицу, я вернусь и подробно расскажу о соответствующем бизнесе)
4.7 Что делать, если мне часто требуется доступ к SMS-каналу?
Бизнес снова нашел дешевый СМС-канал, давайте проверим и посмотрим на эффект? Это реальная экономия денег! Каждый раз, когда я пишу класс (доступ к SMS эквивалентен написанию курса), мне нужно перезапускать выпуск и выходить в интернет? Это не надежно, не так ли?
решение: Верхний механизм правил извлекает бизнес-код, и функция может быть реализована без выхода в автономный режим.
05. Резюме
Реализовать функцию очень просто, но если учесть надежность, стабильность и гибкость кода в процессе реализации функции, чего вы боитесь в процессе собеседования?? Когда я вышел на собеседование, то сказал, что внедрил распределенный центр настройки на основе существующего сценария, что значительно повысило эффективность работы. Когда я выходил на собеседование, то сказал, что провел полный мониторинг и сигнализацию всей системы.В ходе этого процесса на линии не было ни одной неисправности.Я обычно сталкиваюсь с проблемами, какие у меня есть решения и так далее.
Эта статья фактически эквивалентна «прогнозу», и я буду реализовывать эти функции одну за другой позже (разумеется, мои маленькие цели не только упомянутые выше)
Обратите внимание на мой публичный аккаунт WeChat【Java3y】 В дополнение к технологиям, я также расскажу о повседневной жизни, некоторые слова могут быть сказаны только тихо ~[Онлайн-интервьюер + написание Java-проектов с нуля]Непрерывное высокоинтенсивное обновление! попросить звезду! !Оригинал это не просто! ! Проси три! !
Ссылка на гите:gitee.com/austin
Ссылка на гитхаб:github.com/austin