最近加班有点多,一周五天,四天加班到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 = -;
}
else
{
request.Num = ;
}
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看下:

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

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

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

    这里第一次搭建,所以IdentityServer端比较简单,后期再进行完善. 1.新建API项目MI.Service.Identity,NuGet引用IdentityServer4,添加类InMemo ...

  2. .Net Core 商城微服务项目系列(十四):分布式部署携程Apollo构建配置中心

    一.开场白 在系统设计里我们有很多配置希望独立于系统之外,而又能够被系统实时读取.但是在传统的系统设计里,配置信息通常是耦合在系统内的,比如.net里通常会放在App.config或者web.conf ...

  3. .Net Core 商城微服务项目系列(六):搭建自己的Nuget包服务器

    当我们使用微服务架构之后,紧接而来的问题便是服务之间的程序集引用问题,可能没接触过的同学不太理解这句话,都已经微服务化了为什么还要互相引用程序集,当然可以不引用.但是我们会有这样一种情况,我们的每个接 ...

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

    RabbitMQ是什么,怎么使用我就不介绍了,大家可以到园子里搜一下教程.本篇的重点在于实现服务与服务之间的异步通信. 首先说一下为什么要使用消息队列来实现服务通信:1.提高接口并发能力.  2.保证 ...

  5. .Net Core 商城微服务项目系列(十二):使用k8s部署商城服务

    一.简介 本篇我们将会把商城的服务部署到k8s中,同时变化的还有以下两个地方: 1.不再使用Consul做服务的注册和发现,转而使用k8s-dns来实现. 2.不再使用Ocelot作为业务网关,使用T ...

  6. .Net Core 商城微服务项目系列(五):使用Polly处理服务错误

    项目进行微服务化之后,随之而来的问题就是服务调用过程中发生错误.超时等问题的时候我们该怎么处理,比如因为网络的瞬时问题导致服务超时,这在我本人所在公司的项目里是很常见的问题,当发生请求超时问题的时候, ...

  7. .Net Core 商城微服务项目系列(十三):搭建Log4net+ELK+Kafka日志框架

    之前是使用NLog直接将日志发送到了ELK,本篇将会使用Docker搭建ELK和kafka,同时替换NLog为Log4net. 一.搭建kafka 1.拉取镜像 //下载zookeeper docke ...

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

    SkyWalking的安装和简单使用已经在前面一篇介绍过了,本篇我们将在商城中添加SkyWalking构建调用链监控. 顺带一下怎么把ES设置为Windows服务,cd到ES的bin文件夹,运行ela ...

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

    一.系统描述 嗨,好久不见各位老哥,最近有点懒,技术博客写的太少了,因为最近在写小说,写的顺利的话说不定就转行了,哈哈哈哈哈哈哈哈哈. 今天要介绍的是基于.Net Core的定时任务调度和消息队列管理 ...

随机推荐

  1. EOJ 2019.2月赛 D. 进制转换

    https://acm.ecnu.edu.cn/contest/140/problem/D/ 题意 求一个区间L,R中,在K进制表示下末尾恰有m个0的数字个数. 思路 末尾有m个0,就表示的是K^m的 ...

  2. SDU暑期集训排位(8)

    A. A Giveaway 签到 B. Game of XOR 做法 dp[G][L][R]表示在倒数第G代,左边的数是L,右边的数是R,下面共有多少个0和1 区间和转换成两次前缀和和一次单点查询 利 ...

  3. 牛客小白月赛4 C 病菌感染 dfs

    链接:https://www.nowcoder.com/acm/contest/134/C来源:牛客网 题目描述 铁子和顺溜上生物课的时候不小心将几滴超级病菌滴到了培养皿上,这可急坏了他们. 培养皿可 ...

  4. 简单粗暴详细讲解javascript实现函数柯里化

    函数柯里化(黑人问号脸)???Currying(黑人问号脸)???妥妥的中式翻译既视感:下面来一起看看究竟什么是函数柯里化: 维基百科的解释是:把接收多个参数的函数变换成接收一个单一参数(最初函数的第 ...

  5. 【Offer】[29] 【顺时针打印矩阵】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 例如,如果输入如下矩阵:  则依次打印出数字1,2,3,4,8,12, ...

  6. 用lnmp架构部署wordpress网站详细步骤

    用lnmp架构部署wordpress网站 ①.下载和上传网站代码 用winscp或者xftp, 或者xshell下执行rz命令进行上传网站的包文件. ②.解压程序代码,并将程序代码保存到站点目录,并进 ...

  7. 【LeetCode】17-电话号码的字母组合

    题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23" 输出: ...

  8. Storm 系列(一)—— Storm和流处理简介

    一.Storm 1.1 简介 Storm 是一个开源的分布式实时计算框架,可以以简单.可靠的方式进行大数据流的处理.通常用于实时分析,在线机器学习.持续计算.分布式 RPC.ETL 等场景.Storm ...

  9. Intellij IDEA使用restclient测试

    Intellij  IDEA内置了restclient来帮忙我们测试我们的后台代码,让我们可以脱离第三方工具测试,也更不需要我们编写前端代码,直接让我们能想网站发送get,post,put,delet ...

  10. spring boot发送其他邮件

    前面已经讲了使用springboot采用常规的javaweb方式发送邮件和使用spring模板发送邮件.但是发送的都是文本文件,现在来说一下使用spring模板发送一些其他的邮件. 1.pom.xml ...