netcore 高併發秒殺專案實戰2
阿新 • • 發佈:2020-12-29
技術標籤: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);
}
動態代理,程式集掃描註冊
每個微服務有不同的領域模型,所以需要不同的客戶端完成相應業務