最近加班有點多,一周五天,四天加班到11點+,心很累。原因是我當前在的這個組比較特殊,相當於業務的架構組,要為其它的開發組提供服務和監控。所以最近更新的也少,不過這個元旦三天假應該會更新三篇。
這篇是介紹一下商城的購物車,代碼就不詳細介紹了,因為技術點都已經再前面幾篇介紹過了,無非就是產品的增刪該查,當然,數據的更新交互這一塊使用的是我們上一篇介紹的消息隊列,比如購車的添加、修改、刪除。
商城到這塊功能方面就不打算繼續往下寫了,因為后面的功能都是圍繞業務展開,技術方面千篇一律,而我們的關注點在於技術,所以后面的商城系列,一定是圍繞着技術改造,現在還有幾個技術點沒有完成:
1.日志使用Log4net+Kafka+ELK (現在是直接將日志通過tcp發送到logstash)
2.添加SkyWalking調用鏈監控。
3.RabbitMQ消費端獨立成Windows服務,並添加監控。
4.使用Apollo,將配置於程序進行解耦。
5.添加定時任務、消費補償機制。
6.將服務部署到k8s中。
后面的打算是暫時把這幾個技術點給完成,這些都是我們再生產項目中直接用到的技術,一方面鞏固自己的掌握,另一方面可以給有興趣的人了解一下,這里面,我暫時比較想完成的是第6個,有時間的話我會把這幾個服務部署到k8s中,這樣我們就不再需要依賴Consul的服務注冊和發現機制了。
先來看一下購物車完成的情況:
業務其實很簡單,添加到購物車然后進行展示,代碼也就不細講了,貼下主要的購物車代碼:
/// <summary> /// 修改購物車產品數量 /// </summary> public async Task<JsonResult> CountChange(int? CarID, int ProductID, int VersionID, string Operate) { var request = new AddCountRequest { CarId = CarID, ProductId = ProductID, VersionId = VersionID }; if(Operate== "reduce") { request.Num = -1; } else { request.Num = 1; } eventBus.Publish("ShopCarCountChange", request); return Json("OK"); } /// <summary> /// 新增購物車 /// </summary> public async Task<JsonResult> AddCar(int ProductID, int VersionID) { var getColorResponse = await shopCarService.GetColorAsync(new GetColorRequest { VersionId = VersionID }); //發送新增購物車MQ var addShopCarRequest = new AddShopCarRequest { ProductID = ProductID, VersionID = VersionID }; try { eventBus.Publish("AddShopCar", addShopCarRequest); } catch(Exception ex) { Console.WriteLine(ex.Message); return Json("error"); } return Json("ok"); }
可以看到,購物車這里對於數據庫的交互都是通過消息隊列來完成的,服務的代碼就不看了,就是普通的增刪改查。
到此。商城服務一共有5個,我們通過Consul看下:
應該不會再新增服務了,后面會逐步的實現文章開始提到的幾個技術點改造。