Это моя первая статья на английском языке. Так что я надеюсь, что всем понравится эта статья, и если кто-то ничего не понимает или у вас есть вопросы, вы можете написать об этом в комментариях ниже .. Спасибо !!
Многим программистам интересно, какие языки программирования или фреймворки стоит изучить или выбрать для нового проекта. У него так много факторов, которые вам нужно учитывать, прежде чем выбрать лучший, и я думаю, что нельзя отрицать, что скорость работы является одним из самых важных факторов, которые следует учитывать.
Сегодня я познакомлю вас с моим другом ... Его зовут «Бомбардье». Он родился для тестирования вашего сервера. Да, сегодня вы узнаете, какие языки или фреймворки являются самыми быстрыми за 5 минут! !!!!
Бомбардье
Давай сначала познакомимся с моим другом. Как вы знаете, его зовут Бомбардье, и он был рожден Go Language для одной цели ... Это ориентир. Bombardier используйте fasthttp вместо go http для запуска любого сервера, который вы хотите ...
1. Установка
Прежде чем делать что-либо еще, вам нужно сначала установить Go Compiler, потому что Bombardier сделан Golang ..
Затем вы можете установить Bombardier с помощью
go get -u github.com/codesenberg/bombardier
Теперь мы готовы сжечь все, что угодно ... Но сначала нам нужно создать что-то, что будем сжигать :(
2. Создайте сервер
Вы можете создать столько серверов, сколько хотите, а также со сколькими языками или фреймворками.
Но в этом примере я буду использовать Golang и Node.js с http-библиотекой по умолчанию для создания нашего примера Server.
Первое создание Go Server
## server.go package main import ( "fmt" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Println("Hello World") fmt.Fprintf(w, "Hi there, %s!", r.URL.Path[1:]) } func main() { http.HandleFunc("/", handler) fmt.Println("server is listening on 3331") http.ListenAndServe(":3331", nil) }
Затем сервер Node.js
## server.js const http = require(‘http’) const port = 3332 const requestHandler = (request, response) => { console.log(‘Hello World’) response.end(‘Hi there, ‘, request.url) } const server = http.createServer(requestHandler) server.listen(port, (err) => { if (err) { return console.log(‘something bad happened’, err) } console.log(`server is listening on ${port}`) })
Наконец-то оживите оба Сервера !!
3. Пусть сгорит ваш Сервер !!!!
Мы готовы стрелять !! просто откройте другой терминал, затем используя эту команду
./bombardier -c 125 -n 100000 127.0.0.1:3331
- -c: затем номер параллелизма
- -n: после номера запроса
Затем введите URL или IP-адрес и введите «ENTER» !!
В этом примере команды я запрошу наш сервер Go на порту 3331 для запросов 100 КБ при 125 параллелизме. И вот результат !!!
Я пробую одну и ту же конфигурацию для запуска как на Go Server, так и на сервере Node.js.
Пойдите, обработайте все запрошенные удивительно, используя 6 секунд для всех запросов 100k, а в среднем - 17k запросов в секунду !!!!
С другой стороны, Node.js обрабатывает 100 тыс. Запросов за 30 секунд ... это около 3,3 тыс. Запросов в секунду.
Предупреждение!
- Когда вам нужно использовать команду bombardier, сначала перейдите к «Go Path», затем найдите библиотеку bombardier в каталоге bin, или вы можете использовать ее глобально, установив как global.
Что еще нужно знать о тесте
Результат в этой статье очень простой и ничего не доказывает, потому что, если вы хотите провести более серьезный сравнительный анализ, есть много поводов для беспокойства.
- Сеть… Этот пример запускает все запросы в локальной сети, и если вы запускаете из локальной сети, результат будет значительно медленнее.
- Обработчик сервера - это просто функция hello world. Таким образом, некоторые фреймворки или языки могут хорошо справляться с этим, но могут быть медленнее, чем другие, например, когда необходимо подключиться к базе данных.
- Нестабильно и ненадежно запускать 2 сервера на одной машине, которая разделяет все ресурсы. Вам необходимо создать виртуальную машину и установить одинаковые ресурсы для всех серверов, которые вы хотите протестировать.
- У Framworks, Languages, Databases, ORMS есть некоторые накладные расходы ... и этот факт, который вам нужно знать, потому что некоторые языки хороши, но фреймворк или ORM хуже, чем другие фреймворки / ORM на других языках.
На самом деле есть много факторов, которые вам нужно обсудить, прежде чем вы захотите сделать тест более серьезным. Но моя цель в этой статье - рассказать вам, как протестировать любые языки или фреймворки самым простым или простым способом, который вы можете сделать самостоятельно.
Наконец, я надеюсь, вам понравится это, и если что-то не так с содержанием или с моим английским, не стесняйтесь поправлять меня в комментарии ниже .. Thx.