.Net Core 商城微服务项目系列(八):购物车

最近加班有点多,一周五天,四天加班到11点+,心很累。原因是我当前在的这个组比较特殊,相当于业务的架构组,要为其它的开发组提供服务和监控。所以最近更新的也少,不过这个元旦三天假应该会更新三篇。

这篇是介绍一下商城的购物车,代码就不详细介绍了,因为技术点都已经再前面几篇介绍过了,无非就是产品的增删该查,当然,数据的更新交互这一块使用的是我们上一篇介绍的消息队列,比如购车的添加、修改、删除。

商城到这块功能方面就不打算继续往下写了,因为后面的功能都是围绕业务展开,技术方面千篇一律,而我们的关注点在于技术,所以后面的商城系列,一定是围绕着技术改造,现在还有几个技术点没有完成:

1.日志使用Log4net+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看下:

应该不会再新增服务了,后面会逐步的实现文章开始提到的几个技术点改造。

原文地址:https://www.cnblogs.com/weiBlog/p/10200241.html

时间: 2024-10-08 08:51:57

.Net Core 商城微服务项目系列(八):购物车的相关文章

.Net Core 商城微服务项目系列(一):使用IdentityServer4构建基础登录验证

这里第一次搭建,所以IdentityServer端比较简单,后期再进行完善. 1.新建API项目MI.Service.Identity,NuGet引用IdentityServer4,添加类InMemoryConfiguration用于配置api和客户端资源: public class InMemoryConfiguration { public static IConfiguration Configuration { get; set; } /// <summary> /// Define

.Net Core 商城微服务项目系列(四):ELK

毫无疑问,项目里日志是必不可少的,在众多日志框架里ELK可以说是最好的选择之一,对于微服务项目来说也是一样. 之前写过关于ELK搭建的文章,所以这篇也就不再介绍了,本篇将会使用NLog搭配ElasticSearch和Kibana构建日志框架,本来是有Logstash的,但是接入Logstash后日志总是发送不成功,所以本篇将暂时不使用Logstash,等后面找到具体什么问题后再进行修改,最终整体的日志架构会是NLog+ELK+Kafka. 运行ELK有两种方式,一种是分别单独运行ElasticS

.Net Core 商城微服务项目系列(七):使用消息队列(RabbitMQ)实现服务异步通信

RabbitMQ是什么,怎么使用我就不介绍了,大家可以到园子里搜一下教程.本篇的重点在于实现服务与服务之间的异步通信. 首先说一下为什么要使用消息队列来实现服务通信:1.提高接口并发能力.  2.保证服务各方数据最终一致.  3.解耦. 使用消息队列通信的有点就是直接调用的缺点,比如在直接调用过程中发生未知错误,很可能就会出现数据不一致的问题,这个时候就需要人工修补数据,如果有过这个经历的同学一定是可怜的,人工修补数据简直痛苦!!再比如高并发情况下接口直接挂点,这就更直白了,接口挂了,功能就挂了

.Net Core 商城微服务项目系列(十):使用SkyWalking构建调用链监控(2019-02-13 13:25)

SkyWalking的安装和简单使用已经在前面一篇介绍过了,本篇我们将在商城中添加SkyWalking构建调用链监控. 顺带一下怎么把ES设置为Windows服务,cd到ES的bin文件夹,运行elasticsearch-service.bat install. 首先我们需要在每个服务里通过NuGet引用SkyAPM.Agent.AspNetCore,完成之后我们添加配置文件skyapm.json,可以通过SkyWalking的脚本命令自动生成,也可以手动新建,这里贴一下: { "SkyWalk

.Net Core 商城微服务项目系列(二):使用Ocelot + Consul构建具备服务注册和发现功能的网关

1.服务注册 在上一篇的鉴权和登录服务中分别通过NuGet引用Consul这个包,同时新增AppBuilderExtensions类: public static class AppBuilderExtensions { public static IApplicationBuilder RegisterConsul(this IApplicationBuilder app,IApplicationLifetime lifetime,ServiceEntity serviceEntity) {

.Net Core 商城微服务项目系列(三):Ocelot网关接入Grafana监控

使用网关之后我们面临的一个问题就是监控,我们需要知道网关的实时状态,比如当前的请求吞吐量.请求耗费的时间.请求峰值甚至需要知道具体哪个服务的哪个方法花费了多少时间.网关作为请求的中转点是监控品牌的要塞. 本篇将针对Ocelot添加Metrics+InfluxDB+Grafana架构的监控. 1.下载安装InfluxDB和Grafana 在使用前需要先下载InfluxDB和Grafana这两个工具,下载安装方式大家可以先看下Edison Zhou大神的这篇:https://www.cnblogs.

.Net Core 商城微服务项目系列(十五): 构建定时任务调度和消息队列管理系统

一.系统描述 嗨,好久不见各位老哥,最近有点懒,技术博客写的太少了,因为最近在写小说,写的顺利的话说不定就转行了,哈哈哈哈哈哈哈哈哈. 今天要介绍的是基于.Net Core的定时任务调度和消息队列管理系统.相信大家对这两个肯定都已经很熟悉了,在开发过程中,这两个组件扮演了不可或缺的角色: 消息队列帮助我们进行 ”解耦“.”异步“.”削峰“ 定时任务帮助我们进行 "后台".”监控".“补偿" 定时任务调度系统大家都介绍过很多次了,园子里的很多文章我也都拜读过,我相信大

.Net Core 微服务容器系列基础目录篇

1.开场白 HI,各位老铁,大家端午好,之前写了些关于.net core商城系列的文章,有点乱,今天心血来潮想着整理一下(今天只是先把目录列出来,后面的每篇文章这两天会进行重新修改的,目前先将就看下). 简单介绍一下,博主目前就职于某电商公司,目前工作用的是.net core,业余时间也会看下Java,公司内部目前也是多语言并存,毕竟很多工具和技术对于这两种语言都是相通的,所以多了解下哈. 本系列项目将会以.net core+Docker+K8s来搭建,当然你用java来改写一下也是没问题的,因

.NET平台微服务项目汇集

最近博客园出现了一篇文章<微服务时代之2017年五军之战:Net PHP谁先死>,掀起了一波撕逼,作者只是从一个使用者的角度来指点江山,这个姿势是不对的..NET Core就是专门针对模块化的微服务架构而设计,在微服务架构这方面Java的Spring Cloud具有非常高的人气,这个正是这篇文章作者的立脚点.然后他没有看到蓬勃发展的.NET 社区的微服务的相关框架,本文主要梳理下当前.NET社区微服务的相关项目的汇集. 1. Service Fabric 微软作为.NET的主战场,自然在当前的