1. 程式人生 > 其它 >netcore 高併發秒殺專案實戰2

netcore 高併發秒殺專案實戰2

技術標籤:netcore

微服務框架

中臺呼叫元件封裝

完成不同元件間的通訊, HttpClient封裝,


inteface IMiddleService{
MiddleResult Get(string url,IDictionary<string,object> param);
MiddleResult Put(string url,IDictionary<string,object> param);
MiddleResult Delete(string url,IDictionary<string,object> param);
MiddleResult
Post(string url,IDictionary<string,object> param); } class MiddleResult{ public string ReturnCode{set;get;} public string ErrorInfo{set;get;} public IDictionary<string,object> ResultDic{set;get;} public IList< IDictionary<string,object>> ResultList{set;get;} public dynamic Result{
set;get;} }

斷路器Polly元件封裝

超時-》重試-》熔斷-》降級

註冊中心元件封裝

解耦具體微服務的呼叫,微服務可動態伸縮
Consul grpc,webapi 呼叫

  • 註冊服務介面
  • 發現服務介面
  • IHostedService
  • 服務名稱,Scheme

負載均衡元件封裝

inteface IloadBalance
{
 ServiceNode Select(Ilist<ServiceNode > nodes);
}

class AbstractLoadBalance:IloadBalance
{
ServiceNode Select(Ilist<ServiceNode >
nodes); ServiceNode DoSelect(Ilist<ServiceNode > nodes); }

最合適: 最少活躍數演算法。

動態中臺呼叫元件封裝

inteface IDynamiceMiddleService
{
 List<T> GetList<T>(string urlScheme,string serviceName,string serviceLink,IDictionary<string,object> param) where T:new();
void  Post(string urlScheme,string serviceName,string serviceLink,IDictionary<string,object> param);
void  Delete(string urlScheme,string serviceName,string serviceLink,IDictionary<string,object> param);

}
inteface IDynamiceMiddelUrl
{
string GetMiddleUrl(string urlScheme,string serviceName);
}

微服務客戶端元件封裝

約定大於配置

[MicroClient("https","OrderServices")]
inteface IOrderClient
{
[PostPath("Orders")]
Order CreateOrder(Order order);
}

動態代理,程式集掃描註冊

每個微服務有不同的領域模型,所以需要不同的客戶端完成相應業務

框架異常元件封裝