事情的起因 我们公司现有一块业务叫做抢红包,最初的想法只是实现了一个初代版本,就是给指定的好友单发红包,随着业务的发展,发红包和抢红包的场景也越来越多,目前主要应用的场景有:单聊发红包.群聊发红包.名片发红包.直播场景中的主播发红包/观众给主播发红包/定时抢红包,接下来,如果出现其它产品的业务,也将大概率的出现抢红包的需求. 大同小异的抢红包业务 红包的场景无论怎么变化,其核心算法不变,这部分是可以抽象的内容,随着迭代发展,我们之前通常都是通过增加红包的类型(业务)来扩展,但是随着肉眼可见的发展…
.NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含有界面的组件包 (三)构建界面 .NetCore 下开发独立的(RPL)含有界面的组件包 (四)授权过滤 .NetCore 下开发独立的(RPL)含有界面的组件包 (五)授权过滤参数处 理 .NetCore 下开发独立的(RPL)含有界面的组件包 (六)实现业务功能 这里们来做一个简单的业务列表功能…
.NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含有界面的组件包 (三)构建界面 .NetCore 下开发独立的(RPL)含有界面的组件包 (四)授权过滤 .NetCore 下开发独立的(RPL)含有界面的组件包 (五)授权过滤参数处 理 .NetCore 下开发独立的(RPL)含有界面的组件包 (六)实现业务功能 前面一篇中处理授权类,但是不难发…
.NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含有界面的组件包 (三)构建界面 .NetCore 下开发独立的(RPL)含有界面的组件包 (四)授权过滤 .NetCore 下开发独立的(RPL)含有界面的组件包 (五)授权过滤参数处 理 .NetCore 下开发独立的(RPL)含有界面的组件包 (六)实现业务功能 对于我们的组件页面当然不是所有的…
.NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含有界面的组件包 (三)构建界面 .NetCore 下开发独立的(RPL)含有界面的组件包 (四)授权过滤 .NetCore 下开发独立的(RPL)含有界面的组件包 (五)授权过滤参数处 理 .NetCore 下开发独立的(RPL)含有界面的组件包 (六)实现业务功能 在前面的基础上我们来添加引入我们…
.NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含有界面的组件包 (三)构建界面 .NetCore 下开发独立的(RPL)含有界面的组件包 (四)授权过滤 .NetCore 下开发独立的(RPL)含有界面的组件包 (五)授权过滤参数处 理 .NetCore 下开发独立的(RPL)含有界面的组件包 (六)实现业务功能 在.netcore中大家经常会看…
.NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含有界面的组件包 (三)构建界面 .NetCore 下开发独立的(RPL)含有界面的组件包 (四)授权过滤 .NetCore 下开发独立的(RPL)含有界面的组件包 (五)授权过滤参数处 理 .NetCore 下开发独立的(RPL)含有界面的组件包 (六)实现业务功能 相信很多人都nuget包,一般自…
原文:.netcore下的微服务.容器.运维.自动化发布 微服务 1.1     基本概念 1.1.1       什么是微服务? 微服务架构是SOA思想某一种具体实现.是一种将单应用程序作为一套小型服务开发的方法,每种应用程序都在其自己的进程中运行,并采用轻量级的通讯机制(TCP)进行通信.这些服务是围绕业务功能构建的,可以通过全自动部署机制进行独立部署.这些服务的集中化管理已经是最少的,它们可以用不同的编程语言编写,并使用不同的数据存储技术. 1.1.2       为什么要用微服务? 1.…
日志的分类 首先往大的来说,日志分2种 ①业务日志: 即业务系统需要查看的日志, 常见的比如谁什么时候修改了什么. ②参数日志: 一般是开发人员遇到问题的时候定位用的, 一般不需要再业务系统里展示. 对于业务日志, 我们现在基本确定" 业务日志是业务" 这么个准则, 即业务日志应该跟随着业务表走. 比如你一个订单的操作日志, 那么订单表再哪它就应该在哪, 业务日志应该要跟着你的业务操作同生共死(事务性), 基于上述理念所以业务日志我们不会用table存 对于参数日志, 我觉得这个说是后…
Tips: 1.目前NetCore下与Modbus通信的框架主要选择了 Modbus.Net  https://github.com/parallelbgls/Modbus.Net 2.modbus是常用的工业通信协议,在软件调试时可以通过modbus poll+slave模拟通信通过达到调试目的,下图是我使用软件 1)为串口模拟工具 2)为Modbus Slave模拟工具 3)为Modbus Poll模拟,修改对应Value值即可发送到Slave 调用和测试代码: public class M…
原文:QQ浏览器.搜狗浏览器等兼容模式下,Asp.NetCore下,Cookie.Session失效问题 这些狗日的浏览器在兼容模式下,保存Cookie会失败,是因为SameSiteMode默认为Lax. 有时页面需要用到验证码时,可能需要TempData保存一下,但是这种情况是无效的,因此需要用Session来存取,因为Session可以配置SameSiteMode 废话不多说,要修改的位置有3个,均是在Startup里面,设置完成即可 services.Configure<CookiePol…
NETCore下IConfiguration和IOptions的用法 https://www.cnblogs.com/RainingNight/p/strongly-typed-options-configure-in-asp-net-core.html…
引言 前段时间,公司对运行的系统进行了一次安全扫描,使用的工具是 IBM 公司提供的 AppScan . 这个正所谓不扫不要紧,一扫吓一跳,结果就扫出来这么个问题. 我们的一个年老失修的内部系统,在登录的时候,被扫描出来安全隐患,具体学名是啥记不清了,大致就是我们在发送登录请求的时候,有个字段名是 password , AppScan 认为这个是不安全的,大概就是下面: 我第一个反应是把这个字段名字改一下,毕竟能简单解决就简单解决嘛,结果当然是啪啪啪打脸. 这个名字我不管是换成 aaa 还是 b…
Nginx高可用模式下的负载均衡与动静分离 Nginx(engine x)是一个高性能的HTTP和反向代理服务器,具有内存少,并发能力强特点. 1.处理静态文件.索引文件以及自动索引:打开文件描述符缓冲 2.无缓存的反向代理加速,简单的负载均衡和容错 一.Nginx负载均衡原理 Nginx负责转发到Tomcat(注意:Nginx与Web部署在同一台服务器).可用下图描述: 说明: Step1:浏览器发送http请求,通过域名,找到hosts文件下对应的IP. 注:域名工作原理(www.cang.…
之前一直做dotnet framework开发,依赖注入使用Autofac,Autofac的一般用法是服务启动时,将用到的接口.实现类名注入进去, 然后在服务其他地方如果使用该类时,直接在Container里面Resolve出来即可. 后来使用netcore 2.1,框架本身使用了Microsoft.Extensions.DependencyInjection,是服务启动时,把需要注入的服务通过 public void ConfigureServices(IServiceCollection s…
说道这一块纠结了我两天时间,感觉真的很心累,Jenkins的安装就不多说了 这里我们最好直接安装到宿主机上,应该pull到的jenkins版本是2.6的,里面很多都不支持,我自己试了在容器中安装的情况,效果很不满意 这篇文章主要就是为了解决两个问题: 1.配置问题 2.容器发布运行问题 为了解决这两个问题也是费了我不少精力,首先shell编程你的会啊,做一个DevOps真心累,关于Jenkin拉去代码的问题这里不多说,主要针对上面2个问题说下我个人的观点 微服务架构都是有配置中心,为了解决第一个…
[译]原文https://prometheus.io/docs/introduction/overview 什么是Prometheus? Prometheus是一个开源系统监控和警报工具包,最初起源于SoundCloud.自2012年成立以来,许多公司和组织都采用了Prometheus,该项目有一个非常活跃的开发人员和用户社区.它现在是一个独立的开源项目,Prometheus在2016年加入了云计算基金会,成为继Kubernetes(k8s)之后的第二个托管项目. 特性介绍 Prometheus…
在使用微服务的过程中经常会遇到这样的情况,就目前我遇到的问题做下分析 情况一: 这里服务对于前后端分离情况来说,多使用查询服务,前端直接获取不同服务的数据展示,如果出现其中的服务失败,对业务数据无影响,只对前端数据展示出现影响 情况二 这列聚合服务主要出现在操作上,各个服务存在相互调用,相互协作完成某一项操作的情况 接下来我在API中添加了聚合服务模块,利用 IHttpClientFactory处理了情况的服务根目录及授权问题 services.AddHttpContextAccessor();…
新建.NetCore的控制台项目 使用Nuget安装Pomelo.entityframeworkcore.mysql 工程右键--->编辑.csproj文件,把以下内容写入到工程文件 <ItemGroup> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.1.1" /> </ItemGroup> 修…
Tips: 1.注意跟普通版Net.MVC的前端处理方式不一样,以前可以connection.start()后直接done里面再做逻辑处理,现在不行了 建议做法是在具体的业务Hub里重写OnConnectedAsync事件,来为当前连接ID做分组等处理 2.目前版本只支持了websocket协议,还不支持Comet长连接方式 后台代码: public class MessengerHub : Hub { private readonly IHttpContextAccessor _accesso…
1.背景 由于历史原因,笔者所在的公司原有的ES查询驱动采用的是 PlainElastic.Net, 经过询问原来是之前PlainElastic.Net在园子里文档较多,上手比较容易,所以最初作者选用了该驱动,而发布也由于历史原因都部署在 windows 服务器上,基于 .NET Framework开发. 后来由于迁移 .NET CORE 平台的需要,对代码进行了升级,同时部署平台也迁移至 CentOS7 服务器,升级过程比较顺利,由于没有使用特殊API,所以几乎没有对业务代码做更多的修改,同时…
前言 上一篇博客上已经实现了使用EventBus对具体事件行为的分发处理,某种程度上也算是基于事件驱动思想编程了.但是如上篇博客结尾处一样,我们源码的执行效率依然达不到心里预期.在下单流程里我们明显可以将部分行为进行异步处理,提升下单操作的执行效率. Redis基础命令 Redis有两种方式可支持我们实现MQ功能,1.使用列表(List)相关命令特性:2.使用publish.subscribe命令特性: 这里我是采取列表相关命令实现. 使用列表(List)相关命令的特性实现 压入数据(发布消息)…
本人主要利用IdentityServer4以及SignalR来实现,IdentityServer4作为认证,SignalR来交互配置,这里一些代码可能就是部分提出来,主要介绍实现原理及方法 实现配置中心核心的两个点我们要放在 1.配置文件如何传送 2.配置文件如何动态的更新 配置文件的传送结合SignalR来实现 思考:什么样的客户端可以来获取配置? 这里客户端我们配置了 这里我直接结合Identityserver4,配置客户端id,客户端密钥,配置中心地址.在配置一个IdentityServe…
Web开发系统文件默认存储在wwwroot目录下面,现在越来越多的系统服务化了,UI也更加多元化,当然文件可以用第三方的文件服务,但是这里准备文件分离出来构建自己的文件服务配合数据库表来实现(UosoOSS) 思路: 1.构建自己的文件夹及文件管理(包括私有权限)这里需要结合IdentityServer4的客户端模式中的一些客户端ID设计到文件管理中去 2.实现一个类似 AliyunOSS的文件管理及客户端类库,帮助实现上传,以及文件地址的生成 3.处理文件的访问权限 首先来实现服务部分,构建自…
Prometheus中包含了很多收集指标,那么我们怎来在Grafana中来使用呢? 接下来我们还是以之前自定义的来演示如图:我们在Prometheus中已经可以看到这个之前我们自定义的类型了 关于Grafana的部署前面的文章已经介绍过了,这里就不继续介绍了,这里新建一个面板 添加图表 创建好后会默认添加一个图标,这里我们选择编辑 接下来选择数据源名称,前面的章节已经介绍过了 如下图输入我们自定义的指标,其实这里都是智能检索的,都有提示的,我们选这这个之前定义好的 然后统计图就已经有了如图: 这…
Prometheus下面定了四种类型的收集方式,下面我们主要来来说下Counter的使用 Nuget导入Prometheus.AspNetCore包 下面先来看下我的Prometheus配置,这里我没有分组了 这里我有三个服务,分别是认证服务40000 用户服务 40001 以及体检服务 40002 配置好了重新用配置启动,已启动kill掉在启动 这里我们访问 http://192.168.0.212:9090/targets,可以看到配置的服务状态都是Up,其实Prometheus中自带了服务…
今天我把WebAPI部署到CentOS Docker容器中运行,发现原有在Windows下允许的JWTBearer配置出现了问题 在Window下我一直使用这个配置,没有问题 services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.Authority = _authorityconfig.Authority; options.RequireHttps…
在代码中使用就比较简单了 Nuget包获取下 prometheus-net prometheus-net.AspNetCore 然后添加中间件就行了 app.UseMetricServer(); 默认地址都是/metrics,在Prometheus中的targets就是指向了这个地址,当然如果需要认证的话需要处理,Prometheus也需要设置先关认证,这里我写在了GateWay中,允许查看下 http://localhost:5000/metrics # HELP process_window…
有了前面InfluxDB的经验,这里就很好处理了,数据类型选择Prometheus选地址等,填好保存 同样通过导入数据处理,我们在https://grafana.com/dashboards上选择Dashboards,可以拷贝Josn也可以输入ID 导入就行了 也可以通过这里导入 看下接下来的工作面板…
Prometheus对Windows有相关的支持  下载地址:https://prometheus.io/download/ wget https://github.com/prometheus/prometheus/releases/download/v2.5.0/prometheus-2.5.0.linux-amd64.tar.gz 如果需要也可以下载其他组件支持 解压安装: tar -xvf prometheus-.linux-amd64.tar.gz 查看配置:cd /目录查看配置 cd…