Redis benchmark là một kỹ thuật giúp những lập trình viên có thể có thể sử dụng để mô phỏng một số lượng khách hàng tùy ý kết nối cùng một lúc và thực hiện các hành động trên máy chủ, xác định được thời gian hoàn thành các nhiệm vụ.
Redis được biết đến là một database được lưu trữ trong memory được sử dụng để triển khai livestream, message queue, cache, và lưu trữ dữ liệu nếu muốn.
Redis là gì? Redis là kho dữ liệu trong bộ nhớ, mã nguồn mở để sử dụng làm cơ sở dữ liệu, bộ nhớ đệm, trình chuyển tiếp tin nhắn và danh sách tác vụ chờ xử lý. Redis là tên viết tắt của Remote Dictionary Server (Máy chủ từ điển từ xa), là kho dữ liệu khóa-giá trị, trong bộ nhớ, mã nguồn mở và có tốc độ truy cập nhanh để dùng làm cơ sở dữ liệu, bộ nhớ đệm, trình chuyển tiếp tin nhắn và danh sách tác vụ chờ xử lý
Redis và Memcached vốn dĩ rất thân thuộc với nhiều lập trình viên backend, chúng đều là cơ sở dữ liệu dựa trên bộ nhớ và thường được sử dụng làm bộ nhớ đệm (cache) trong ứng dụng hiện nay, và cũng có nhiều kịch bản để áp dụng.
Caching in Node.js using Redis - Đã có nhiều bài viết nói về sự lợi hại của cache. Nhưng để chứng minh điều đó, thì họ lại không nói. Các bài viết thiên về SEO hơn chúng ta nghĩ. Và đây là bài viết của dân kỹ thuật, tôi sẽ chứng minh sức mạng của việc sử dụng cache.
Cách connect redis này là một cách tạo độ tin cậy và giám sát hệ thống một cách hiệu quả trong kiến trúc microservice, đến nay chúng tôi vẫn sử dụng cách này triển khai cho nhiều dự án.
Ngoài sức tưởng tượng của tôi khi bài viết "Redis – 3 vấn đề LỚN có thể mất việc khi sử dụng cache" có lượt tương tác hơn tôi nghĩ đến x3 lần.
Giỏ hàng hay Shopping carts là một chức năng mà bất kỳ application thương mại điện tử nào cũng sẽ sử dụng hay nói cách khác là không thể thiếu cho người dùng. Vì sao? và dùng redis như thế nào tất cả sẽ có trong nội dung này.
Tôi cảm thấy rằng việc sử dụng redis trong dự án chủ yếu được xem xét từ hai khía cạnh đó là hiệu suất và đồng thời. Tất nhiên, redis cũng có các chức năng khác như khóa phân tán
Redis là một giải pháp tuyệt vời để tạo các dịch vụ cơ sở hạ tầng như message queue và event stores, nhưng có một số điều bạn cần tính đến khi sử dụng kiến trúc microservices để tạo hệ thống phân tán.
Redis String là một trong những cấu trúc dữ liệu cơ bản nhất trong Redis, nó có thể lưu trữ bất kỳ loại dữ liệu nào, bao gồm number, text, object được tuần tự hóa, v.v. String trong Redis có thể lưu trữ tới 512MB dữ liệu.
Chúng ta đều biết rằng Redis cung cấp vô số kiểu dữ liệu, có 5 kiểu phổ biến là String (chuỗi), Hash (băm), List (danh sách), Set (tập hợp), Zset (tập hợp có thứ tự). Với việc cập nhật phiên bản Redis mỗi ngày tinh vi hơn, thì có 4 kiểu dữ liệu được hỗ trợ thêm đó là
Nghe tiêu đề bạn cũng như tôi đều giật mình nếu như bạn là một người luôn đọc về tin tức của các nhà lập trình. Đây không phải vấn đề của Redis mà là người bắt đầu dự án Redis hơn mười năm trước. Và vào ngày 01/07/2020 Salvatore Sanfilippo đã nói lời chào tạm biệt tới Redis cũng giống như cách mà Ryan Dahl đã rời bỏ Node để xây dựng Deno. Nhưng Salvatore Sanfilippo hành động như thế nào khi rời Redis?
Để hiểu về 3 sự cố khi sử dụng cache đó là sự cố tuyết lở trong Cache (cache avalanche), sự cố sụp đổ (cache breakdown), sự cố thâm nhập cache (cache penetration).
Đối với Lập Trình Viên Backend lâu năm không cần phải giải thích tính quan trọng của cache (redis, memcached) nó được sử dụng rộng rãi trong các dự án do tính đồng thời cao và hiệu suất cao không phải bàn cãi, nhưng nó có nhược điểm đó là tính nhất quán.
jsonwebtoken rất dễ bị tấn công vì nhiều yếu tố trong đó việc lưu trữ access token trên Client cũng là một trong điểm yếu đó. Có hai cách phổ biến để tránh bị đánh cắp đó là đừng sử dụng jwt hoặc không để token ở máy khách. Chúng tôi đã chọn cách không lưu trên Client.
Gần đây mình chơi redisearch thay thế cho elasticsearch. Vì đọc nhiều dự án thương mại sử dụng redisearch, và cũng tham khảo nhiều chỗ, chính vì vậy viết lại cho anh em cách sử dụng redisearch.
Memcached bạn đã từng nghe nói về cụm từ này bao giờ, redis, firebase...? Và nếu nghe rồi bạn đã sử dụng chúng ở đâu cho những ứng dụng của mình? Và bạn dùng công nghệ hay công cụ gì để memcached ? Tất cả những câu hỏi đó, sẽ được trả lời trong bài viết này. Để có cái nhìn tổng quát hơn, chúng ta sẽ đi vào một trường hợp thực tế.
Ở phía backend thì ngoài tối ưu hóa việc triển khai code là ưu tiên hàng đầu, tiếp theo là về SQL, và sau đó chính là bộ nhớ đệm hay gọi là cache. Cache cũng có hai loại đó là Bộ nhớ cache cục bộ và Dịch vụ bộ nhớ đệm.
Mỗi một dự án, mỗi một webservice cũng đều kết nối ít nhất một hay nhiều database. Việc lựa chọn database nào cho dự án phù hợp thì tuỳ thuộc vào bạn. Ở bài viết này, chúng tôi sẽ hướng dẫn cách connect database với nodejs với nhiều database như: Cassandra, Couchbase, CouchDB, LevelDB, MySQL, MongoDB...
Nodejs - Cách thiết kế hệ thống tặng phiếu giảm giá tăng đột biến. Bài viết mang tính thực tế cao trong giai đoạn thiết kế hệ thống lớn. Và nằm trong Series - Con đường trở thành kỹ sư...
Cách tính toán lượt views như thế nào? Đó là một trong những câu hỏi mà đã được chọn lọc trong nhiều câu hỏi trong tuần này. Vì đây là thuật toán được nhiều anh em quan tâm, nên tôi làm kỹ vấn đề này.
Ở phần trước chúng ta đã đến cập đến tuyền phòng thủ đầu tiên trong hệ thống [DDD bán vé tàu TẾT - Đồng thời cao], ở đó có một khái niệm cân được quan tâm đó là `circuitBreaker` và `RateLimiter`. Cốt lõi là `circuitBreaker` nó sẽ phát huy tác dụng trong trường hợp đó chính là quấy bán vé quá tải thì phải lập tức chuyển qua trạng thái OPEN.
RediSearch là một công cụ full-text search, có nghĩa là bạn có thể sử dụng thay cho elasticsearch nếu muốn, bài viết này giúp bạn hiểu sâu hơn về cách thực hiện tìm kiếm trong database và những ưu điểm khi sử dụng redisearch.
INTERVIEW BACKEND vị trí Fresher BE như sau: Làm thế nào bảo vệ hệ thống cụ thể là nhiệm vụ API FORGOT PASSWORD khi có nhiều request trong một thời gian ngắn hạn.
Triển khai quy trình đăng ký người dùng trong dự án Shopdev, bao gồm kiểm tra email hoặc số điện thoại, mã hóa dữ liệu, gửi OTP qua Kafka và AWS, và lưu trữ dữ liệu bảo mật.
Lúc này hệ thống đã lên tới `6000 request/second`, điều đó có nghĩa là hệ thống bán vé tàu của chúng tôi phát huy sức mạnh với nhiều người quan tâm. Ngáp một hơi lấy tinh thân đi ngủ thôi... Cuộc đời lập trình viên đẹp đến thế là cùng... NHƯNG
Sau khi chúng ta triển khai thực hiện chức năng [Go 29: Implement IUserLogin - Register] và `User` sẽ nhận được `OTP` được gửi qua `EMAIL` or `SMS` đã đăng ký. Sau nó nếu User nhập OTP
Như vậy thì ở video trước chúng ta đã lập nên tuyền phòng thủ đầu tiên sử dụng công cụ `Resilience4j` được Netflix khuyên các hệ thống nên thay thế cho `Hystrix`. Vì `Hystrix` đang được maintenance. Tất nhiên các dự án cũ đang còn sử dụng Hystrix thì vẫn có thể sử dụng chúng nhằm giảm lỗi trong hệ thống.
Các lập trình viên nhìn chung có niềm đam mê lớn với công nghệ nên họ sẽ chắc chắn dành nhiều tâm sức cho việc học kỹ thuật lâpk trình trong suốt sự nghiệp của mình. Hơn nữa, các lập trình viên không chỉ cần thành thạo ngôn ngữ phát triển trong công việc mà còn phải thành thạo hàng loạt middleware mà các công nghệ đang triển khai. Ví dụ: Nếu bạn là kỹ sư phát triển back-end, bạn không chỉ cần thành thạo 1-2 ngôn ngữ back-end mà còn cả database, cache, message queue, sync..
Về RabbitMQ, thì tôi đã được tiếp xúc với công nghệ này từ nhiều năm trước, và tôi cũng muốn chia sẻ những điều mình đạt được trong hơn 10 năm làm nghề.
Nodejs limit concurrent requests hay còn hiểu là giới hạn các yêu cầu của người dùng đồng thời. Đó là nhiệm vụ không chỉ ở tầng backend mà còn frontend. Bài viết này giúp những bạn làm backend có thêm một khu vực phỏng thủ rất chi là ok.
Hôm bài viết này tôi và các bạn đi tìm hiều về NodeJS Session. Và Node.JS Session sẽ được viết và demo trong Express JS. Cụ thể hơn đó chính là sử dụng Express-session một middleware trong ExpressJs.
Moment.js đã chính thức đưa ra thông báo ngừng phát triển và đi vào trạng thái bảo trì. Moment.js là một thư viên ngày và giờ lớn và đầy đủ tính năng nhất, tạo điều kiện rất nhiều cho nhiều dự án tính toán ngày và giờ trong JavaScript. Nó có hơn 12 triệu lượt tải xuống mỗi tuần và đã được sử dụng thành công trong hàng triệu dự án.
Hiện nay các ứng dụng thương mại điện tử (TMĐT hay ecommerce) được các nhà lập trình phát triển một cách xuất sắc từ quản lý đơn hàng cho đến chịu tải với hiệu suất cao, tính nhất quán dữ liệu trong khi sử dụng Microservices... Đó là những yếu tố tạo nên một hệ thống bền vững cho các app như Shopee, lazada, alibaba, alimama, và aliconcon.
Debezium là một công cụ mạnh mẽ cho phép chúng ta theo dõi các thay đổi trong cơ sở dữ liệu MySQL và phát những thay đổi đó dưới dạng các sự kiện vào Kafka.
Bám sát vào câu hỏi. "Nếu accessToken bị đánh cắp thì sẽ xử lý như thế nào cũng như làm sao để phát hiện điều đó?". Suy nghĩ. Tại sao nhà tuyển dụng lại hỏi vào thẳng câu đó, hay là từ câu đó nếu mà bạn trả lời được thì sẽ dẫn dắt một câu chuyện khác?
Cache và database nghe qua thì rất đơn giản chỉ cần theo mô hình Cache Aside Pattern là ổn. Nhưng nếu bạn muốn gia nhập những dự án thương mại lớn như tiki hay shopee thì bạn nên phải hiểu nhiều nhiều hơn nữa. Bài viết này sẽ nói đến nhiều vấn đề của tính nhất quán dữ liệu.
Zabbix là một hệ thống giám sát mã nguồn mở tuyệt vời khi sử dụng trong những dự án lớn và nhiều dịch vụ cần quản lý.
Câu hỏi phỏng vấn Nodejs - phân biệt Cookie và Session. Trước tiên hãy xem xét sự giống nhau của Cookie và Session là được sử dụng để theo dõi và xác định danh tính của người dùng.
Webpack là một module bundler cho phép bạn viết bất kỳ định dạng module nào (cũng có thể kết hợp), sau đó biên dịch cho trình duyệt. Webpack phân tách mã dựa trên cách nó được sử dụng trong ứng dụng của bạn và với phân tích trách nhiệm theo module này, việc quản lý, gỡ lỗi, xác minh và kiểm tra mã của bạn trở nên dễ dàng hơn nhiều.
File sqlc và goose dành cho các Lập trình viên Go Member có thể lấy tại đây, Section Go 35: Code + SQL - Build Service Two Factor Authentication - Interface vs SQLC
findOneAndUpdate mongoose là một hàm mà được sử dụng trong nhiều trường hợp. Trong Mongodb có nhiều functions để update một document như updateOne, nhưng đôi lúc chúng ta nên làm việc với một hoạt động mà lượng truy cập đồng thời cao, do đó findOneAndUpdate mongodb là một function nên quan tâm.
Elasticsearch không còn xa lại, một công cụ mạnh mẽ truy vấn dữ liệu. Dể hiểu vì sao các công ty tuyển dụng đều thêm điều kiện "Ưu tiên có kinh nghiệm làm việc với Elasticsearch". Tôi cam đoan bạn sẽ không phí tiền đóng NET để đọc bài viết này.
Firebase giờ đây đã trở nên phổ biến trong việc realtime, hoặc cũng có thể sự dụng để làm cache cho chính dữ liệu của mỗi ứng dụng. Chính vì thế, việc storage trên firebase cũng trở nên quan trọng, và vì thế đôi lúc khiến những devjs trở lên lúng túng. Như trường hợp sau đây.
"Khóa phân tán" là một phương pháp phổ biến được sử dụng để giải quyết "xung đột đồng thời" trong các ứng dụng phân tán hiện nay. Ở đây chúng ta sẽ phân tích các kịch bản và cách triển khai về phương pháp này.
Ryan Dahl người đã tạo ra Node.js đã chính thức phát hành Deno vào tháng 5 năm 2018. Node là một trình chạy JavaScript phía máy chủ tuyệt vời theo đúng nghĩa của nó nhưng vẫn còn thiếu một số tính năng mà ông cho rằng Deno ra đời nhằm khắc phục những vấn đề đó.
Trên thực tế, việc xây dựng bán vé TÀU TẾT về cơ bản là một ứng dụng toàn diện của công nghệ có tính đồng thời cao trong các tình huống cụ thể. Ví dụ như mới tổ chức bán vé vào dịp tết, chuẩn bị bán vé liveshow MỸ TÂM, hoặc bán Iphone 17... Các kịch bản có tính đồng thời cao và khả năng thiết kế kiến trúc có tính tương tranh cao là khả năng then chốt không thể thiếu đối với các nhà phát triển. ..
ELK Stack là một hệ sinh thái, được hình thành từ Elasticsearch, Logstash và Kibana. 3 chữ cái ghép lại là ELK. Kibana là lớp trực quan hóa của ELK Stack - nền tảng phân tích nhật ký phổ biến nhất thế giới hiện nay.
Thứ hai, đó là chúng ta phải biết năng lực hiện này của các lập trình viên backend java đều khác nhau, cho nên tốt nhất chúng tôi sẽ chia ra nhiều level khác nhau.
Autocomplete search là một thuật toán rất phức tạp, và đỏi hòi nhiều thuật toán được áp dụng. Nếu bạn đã từng sử dụng Sublime Text để code thì ở đó bạn để ý rằng, đó là một hệ thống tìm kiếm thông minh, khi chúng ta tìm kiếm một vài ký tự thì hệ thống đã gợi ý cho bạn những từ khoá tìm kiếm cụ thể hơn.
Connection pool trong nodejs là rất quan trọng, nó là một kỹ thuật rất quan trọng cho việc tương tác bất kỳ resource như Mysql, PostgreSQL, Redis or MongoDB.
Firebase là Backend-as-a-Service - BaaS. Firebase theo nghĩa rộng là nền tảng phát triển ứng dụng trên thiết bị di động và web. Firebase giải phóng các developer để tập trung tạo ra trải nghiệm cho người dùng sử dụng sản phẩm một cách tuyệt vời.
Chủ đề này đã có người từng hỏi tips javascript, cụ thể là "Anh ơi! Mình thay thế jwt cho session được không?". Với tôi thật sự mà nói là không nên. Nhưng chưa có cơ hội để viết một bài cho rõ ràng.
Local Storage la gì? Như chúng ta đã biết, HTTP là một giao thức không trạng thái, máy khách khởi tạo một yêu cầu, máy chủ xử lý yêu cầu từ máy khách và sau đó gửi phản hồi lại cho máy khách. Sau khi quá trình trao đổi dữ liệu giữa máy khách và máy chủ hoàn tất, kết nối giữa máy chủ và máy khách sẽ bị đóng lại, máy chủ hầu như không có thông tin để xác định người dùng nào đã gửi yêu cầu cũng như không thể ghi lại chuỗi yêu cầu của người dùng truy cập mỗi khi dữ liệu được trao đổi Cần thiết lập kết nối mới, sau này có người dùng, website muốn hiểu được nhu cầu của người dùng, tuy nhiên theo hiện trường lúc đó thì rõ ràng là không thể đáp ứng được nhu cầu công việc, chính vì vậy việc lưu trữ cục bộ(Local Storage) ra đời có thể bù đắp phần phần nào trạng thái của giao thức HTTP.
Full Stack là gì? Có thể nói cụm từ "Full Stack" là một cao thủ trong giới võ lâm - đã từng té xuống bao nhiêu vực và được học nhiều bí kíp, như Front End, Back End, API, Server, Security, Testing, Database. Là một cao thủ nên anh ta có thể luyện võ công (working) ở bất cứ hang động nào (ở tầng nào của một ứng dụng).
Token là gì? Authentication là gì? Session, cookies, SessionId... Nó là gì? Những khái niệm này tưởng chừng như ai cũng biết. Nhưng không hẳn như vậy, khi được hỏi thì trả lời một cách mông lung kiểu như mã hoá dữ liệu vậy. Đây, các bạn có thể tham khảo thêm định nghĩa ở bài post này.
Tôi bắt đầu lập trình bằng javascript cách đây 6 tháng và đây là ngôn ngữ duy nhất tôi biết cho đến nay. Tôi không thực sự hứng thú với frontend và tôi đã quen thuộc với các công nghệ được sử dụng để phát triển phía backend. Tôi muốn ngôn ngữ tiếp theo của mình là ngôn ngữ được sử dụng rộng rãi cho phát triển backend chủ thuần túy trong ngành và tôi không thể quyết định giữa JAVA, Go, C#, PHP, python. Ngôn ngữ nào có thể mang lại cho tôi nhiều cơ hội nhất để bắt đầu hành trình của mình trong những năm tiếp theo của lập trình viên.
Nodejs Series đã qua được 3 bài viết, và bài viết này giải đáp thắc mắc vì sao Nodejs có thể cải tiến hiệu suất cao đến như vậy. Đọc từ từ sẽ rõ.
JSON Web Token (JWT) là một cơ chế bảo vệ tài nguyên có thể nói đến bây giờ nó phổ biến rộng rãi đến mức nhà nhà, người người ai cũng biết đến nó. Nhưng hiện tại qua nhiều diễn đàn, vẫn còn đâu đó những câu hỏi như làm sao lấy lại token mới nếu như hết hạn sử dụng refresh token?