1.用.NET5从零开始搭建以及部署一个简易的商城微服务程序

微服务的实践正式开始


从今天开始,从零做一套简单的微服务程序,有时候光看一些文章,代码,不足以让我们印象深刻的记住这些知识,想要掌握这些知识,感觉最好的方式就是自己去实践加实现。

说微服务之前,还是在啰嗦两句。顺便自我总结一下,在之前做过的项目中,大多都是一些单体项目,也有一些是前后端分离的项目,都是部署在一台机器上,没有集群,若服务器故障,则整个项目就挂了,而随着项目功能越来越多,项目越来越庞大,每次更新发布,哪怕只修改了某一个逻辑的一小块功能点,那还是得发布更新整个项目。

微服务的出现,就很好的解决了上述问题,每个服务可以有多个实例,部署在不同的机器上,组成集群,只要有一台服务器还活着,服务就可以正常工作,保证项目的高可用。同时,由于一个大项目拆分成了多个小项目,若某一个项目修改,则只更新发布这一个服务即可,对其他服务不影响,减少出错的概率。

好了,话不多说,正式开始微服务之旅。

选用技术


.NET5 已经出来一段时间了,作为.NET的忠实粉丝,毫无疑问选.NET5,其他技术包括,WebApi + EFCore + Mysql + Vue + Ocelot + Consul +Polly + Identity Server4 + gRPC + Nginx + Docker + Apollo+Redis。由于这只是一个学习时的demo项目,所以不求业务多复杂,只求技术用的多。

项目架构图

在这里插入图片描述

这样看起来还是比较清晰的,小人就是客户端Vue,,网关连接着Consul做服务发现,然后请求通过网关在转发到各个服务,三个服务之间公用一个数据库,服务之间还有gPRC的调用。

这里有一点,身份认证我没有画线,一开始身份证认证是和网关在一起的,在网关层面做请求的筛选,比如验证用户Token是否有效,在网关层直接限制掉,这样可以减少各个服务的压力,看起来挺好,但是后来我发现,有些服务是不需要用户登录就可以访问的,比如商品列表,注册,所在网关层限制,一刀切就不好了,于是就把身份认证还是放到各个服务去做,若某些接口需要用户登录才能访问,就在方法上加上特性[Authorize]。不需要用户登录就能访问的接口就不加。

接下来就该开始实操了,首先需要新建一堆项目,如下图所示。
在这里插入图片描述
其中Services为服务文件夹,下面是所拆分的三个服务。ConsulBuilderInfrastructure 为公共类库,方便其他项目进行引用,ApiGateway为网关,添加了OcelotConsulIdentity Server为身份认证服务。

所有的接口如下。
登录接口:Ids4授权中心
注册接口:https://localhost:44335/user/register
商品列表接口:https://localhost:44335/goods/getList
购买商品接口:https://localhost:44335/order/buy
订单列表接口:https://localhost:44335/order/getList

前端项目


前端用Vue-cli脚手架直接新建一个项目即可,不做过多说明,结构如下。

在这里插入图片描述

数据库设计


数据库采用Mysql 8.0.22。表设计如下。

goods(商品表)
在这里插入图片描述
order(订单表)
在这里插入图片描述
user (用户表)
在这里插入图片描述
目前只是把项目框架搭起来,接下来还有一系列的文章。

项目地址:https://gitee.com/limeng66/easy-shop

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李公子lm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值