作者:Mark·Richards 簡介 架構模式幫助你定義應用程序的基本特征和行為。例如,一些架構模式會讓程序自己自然而然地朝著具有良好伸縮性的方向發展,而其他架構模式會讓程序朝著高度靈活的方向發展。知道了這些特點,了解架構模式的優點和缺點是非常必要的,它必須我們選擇一個適合自己特定的業務需求和目標 ...
這篇文章主要描述應用程序之間的通信協議,包括進行數據“斷句”的兩種不同方法,以及在應用協議層面實現高性能的雙工通信。 ...
簡介 建造者模式(Builder Pattern),也叫生成器模式,屬于創建型模式。它使用多個簡單的對象一步一步構建成一個復雜的對象。它允許你使用相同的創建代碼生成不同類型和形式的對象。 當你希望使用代碼創建不同形式的產品 (例如各種商品和訂單) 時, 一些基本部件不會變,而其組合經常變化的時候,就 ...
軟件設計開發某種意義上是“取”與“舍”的藝術。
關于性能方面,就像建筑設計成抗震9度需要額外的成本一樣,高性能軟件系統也意味著更高的實現成本,有時候與其他質量屬性甚至會沖突,比如安全性、可擴展性、可觀測性等等。
大部分時候我們需要的是:在業務遇到瓶頸之前,利用常見的技術手段將系統優化到預期水平。 ...
一、Niginx是什么? Nginx是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。 Niginx是一款輕量級的web服務器/反向代理器, Nginx是高性能的HTTP和 反向代理的web服務器,處理高并發的能力十分強大,能夠經受高負載的考驗,高達5萬個并 ...
這篇文章主要描述異步設計,異步是一種程序設計的思想,使用異步模式設計的程序可以顯著減少線程等待,從而在高吞吐量的場景中,極大提升系統的整體性能,降低請求時延。 ...
要 在大數據,云計算,人工智能盛行的環境下,程序員該何去何從?企業自有的研發團隊又該如何規劃?這兩個問題在五年前,我就認真的思考和深入的分析過。程序開發模式基本經歷了以下階段。 傳統的程序開發階段 在對需求進行調研和分析后,最終得到系統的設計架構和技術選型;接下來就是程序員從第一行代碼純手工的編寫, ...
這篇文章主要描述如何解決消息重發的問題,目前主流的消息隊列產品都采用了At least once的服務質量,這就導致了很難避免消息重發的情況,我們可以將消費者業務邏輯設計成冪等服務來解決消息重發問題。 ...
【橋接設計模式詳解】Java/JS/Go/Python/TS不同語言實現 簡介 橋接模式(Bridge Pattern)是一種結構型設計模式,它將一個大類或一系列緊密相關的類拆分為抽象和實現兩個獨立的層次結構,來實現二者的解耦。參與橋接的接口是穩定的,用戶可以擴展和修改橋接中的類,但是不能改變接口。 ...
客觀的理解DDD DDD,即領域驅動設計,不僅帶給我們一套新的概念,還提供了一套全新的設計思路,應用在構建大型復雜軟件系統之上。 相對于DDD,我們使用的傳統的設計思路,常被稱為數據驅動設計,常被應用于中小型的項目?;ヂ摼W的項目,往往是快速迭代,起初一個小項目,慢慢會演化為一個中大型的項目,在演化過 ...
這篇文章主要描述如何解決消息重發的問題,目前主流的消息隊列產品都采用了At least once的服務質量,這就導致了很難避免消息重發的情況,我們可以將消費者業務邏輯設計成冪等服務來解決消息重發問題。 ...
前言 近期ChatGPT可以說是太火了,問答、寫論文、寫詩、寫代碼,只要輸入精確的prompt,他的表現總是讓人驚喜。本著打不過就加入的原則。要是把ChatGPT拉入群聊中,會是怎樣一番場景?說做就做,花了1個晚上搗鼓了一個小Demo【ChatGPT群聊助手】,憑借它的“聰明才智”,應該可以搞定我的 ...
這篇文章主要描述如何在使用消息隊列時避免丟消息,包括檢測消息丟失的方法以及消息從生產到完成消費的過程中,經歷的生產、存儲和消費這三個階段是分別如何保證消息可靠傳遞的。 ...
這篇文章描述如何使用消息隊列中的事務消息機制實現分布式事務。事務消息適用于需要異步更新數據,并且對數據實時性要求不太高的場景。 ...
近期產品要支持國際化多語言,主要涉及前端界面國際化以及后端提示信息、異常信息的國際化多語言支持。 目前我們的開發技術棧:前端VUE、后端.NET。面向前端界面和后端服務,分別涉及對應的國際化多語言支持方案。 一、前端界面國際化多語言支持 前端VUE界面的源碼如下: 上述代碼中,我們將需要多語言支持的 ...
小小的 Redis 大大的不簡單,本文將結合風控名單服務在使用 Redis 存儲數據時的數據結構設計及優化,并詳細分析 redis 底層實現對數據結構選型的重要性。 ...
系統的通知公告功能似乎是很容易被忽略的功能模塊,在傳統的軟件系統中,一般OA類軟件系統不可或缺,而在應用軟件系統中此功能或有或無,在現在大多數的互聯網軟件系統中,此功能又必不可缺。所以,在框架設計時,我們需要考慮業務系統是否需要此功能模塊,然后將此功能作為擴展插件,在需要時開啟,在不需要時配置關閉即 ...
這篇文章主要描述消息隊列中的一些基本概念,我們在使用不同的消息隊列產品時,會遇到不同的“名詞”,今天我們今天來聊聊消息隊列發展歷史,以及一些相關基本概念。 ...
最近公司組織架構調整,整個組換到新部門,需要將原來組內的項目代碼,全部遷移到新的 group 中去(公司用的 gitlab 服務器),要求保留所有的提交記錄、分支和標簽。
我當然知道 Gitlab 本身是支持創建倉庫時通過鏈接導入的,但前提是管理員開啟相關功能。我們此處只講命令遷移方案。
> 本... ...
ECS全稱Entity-Component-System,即實體-組件-系統。是一種面向數據(Data-Oriented Programming)的編程架構模式。本文介紹了ECS架構的基本思想,特點推論,細節討論、代碼原型示例,歡迎大家留言討論! ...