欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS等: 系列文章汇总 jackson学习之一:基本信息 jackson学习之二:jackson-core jackson学习之三:常用API操作 jackson学习之四:WRAP_ROOT_VALUE(root对象) jackson学习之五:JsonInclude注解 jackson学习之六:常用类注…
工作原理 为了实现在k8s上安装Dapr,Dapr需要部署dapr-sidecar-injector.dapr-operator.dapr-placement和dapr-sentry服务. dapr-operator: 管理组件(state stores, pub/subs, etc.) dapr-sidecar-injector: 将 Dapr 注入 annotated pods,并添加环境变量 DAPR_HTTP_PORT 和 DAPR_GRPC_PORT,以使用户定义的应用程序能够轻松地与…
如何单机部署Dapr集群 第十篇讲过了K8S集群下如何使用Dapr运行程序,但是很多人一直在问如何单机下进行Dapr的负载,这节课我们来聊聊如何单机进行Dapr的负载. 首先要说的是单机下,通过 dapr run --app-id xxxxx这个命令是没办法直接运行dapr集群的,因为同一个app-id只能通过dapr run运行一次.这时候我们就需要利用docker来实现dapr的单机集群部署.下面我们就来实现dapr的单机集群部署. 说在中间,欢迎大家参加4小时Dapr+.NET 5的实战课…
如何单机部署Dapr集群 第十篇讲过了K8S集群下如何使用Dapr运行程序,但是很多人一直在问如何单机下进行Dapr的负载,这节课我们来聊聊如何单机进行Dapr的负载. 首先要说的是单机下,通过 dapr run --app-id xxxxx这个命令是没办法直接运行dapr集群的,因为同一个app-id只能通过dapr run运行一次.这时候我们就需要利用docker来实现dapr的单机集群部署.下面我们就来实现dapr的单机集群部署. 项目拓扑 我们采用在docker内部为frontend部署…
什么是Secrets 应用程序通常会通过使用专用的存储来存储敏感信息,如连接字符串.密钥等. 通常这需要建立一个密钥存储,如Azure Key Vault.Hashicorp等,并在那里存储应用程序级别的密钥. 要访问这些密钥存储,应用程序需要导入密钥存储SDK,并使用它访问这些密钥. 这可能需要相当数量的模板代码,这些代码与应用的实际业务领域无关,因此在多云场景中,可能会使用不同厂商特定的密钥存储,这就成为一个更大的挑战. 让开发人员在任何地方更容易访问应用程序密钥, Dapr 提供一个专用的…
服务监测 分布式服务性能指标,链路追踪,运行状况,日志记录都很重要,我们日常开发中为了实现这些功能需要集成很多功能,替换监控组件时成本也很高. Dapr 可观测性模块将服务监测与应用程序分离.它自动捕获由 Dapr sidecar 和 Dapr 服务生成的流量.它还公开性能指标.资源利用率和系统的运行状况. 遥测以开放标准格式发布,使信息能够馈入到选择的监视后端.当 Dapr 获取监控数据时,应用程序不知道如何实现可观测性. 无需引用库或实现自定义检测代码. Dapr可以使开发人员专注于构建业务…
前面我们说了在单机模式下和K8S集群下的Dapr实战,这次我们来看看如何在不使用K8S的情况下,在一个传统的虚拟机集群里来部署Dapr. 1.环境准备 我们准备两台centos7虚拟机 Dapr1:192.168.43.131 Dapr2:192.168.43.132 2.Dapr CLI安装 分别在Dapr1和Dapr2两台虚机上安装Dapr CLI 方式1 wget命令安装 wget -q https://raw.githubusercontent.com/dapr/cli/master/i…
什么是GRPC gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架. gRPC 的主要优点是: 高性能轻量级 RPC 框架. 协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的实现. 可用于多种语言的工具,以生成强类型服务器和客户端. 支持客户端.服务器和双向流式处理调用. 使用 Protobuf 二进制序列化减少对网络的使用. 这些优点使 gRPC 适用于: 效率至关重要的轻量级微服务. 需要多种语言用于开发的系统. 需要处理流式处理请求或响应的点对点实时服务. Dap…
前几节开发Dapr应用程序时,我们使用 dapr cli 来启动dapr服务,就像这样: dapr run --dapr-http-port 3501 --app-port 5001 --app-id frontend dotnet .\FrontEnd\bin\Debug\net5.0\FrontEnd.dll 如果你想要通过dapr调试服务呢?在这里使用 dapr 运行时(daprd) 来帮助实现这一点.具体原理就是先从命令行中运行符合正确参数的 daprd,然后启动您的代码并附加调试器.…
因为基于Dapr的服务架构是不限语言的,我们来看看Dapr的跨语言开发.我们使用golang,python,.NET来实现跨语言的服务调用,拓扑如下 我们继续使用.NET 5的fontend和backend,新增python的flask服务,新增golang的beego服务. 1.新增python的flask服务 新增python虚拟环境flask_env mkvirtualenv flask_env 进入flask_env,安装flask和dapr pip install flask pip…
1.基本概念 Jenkins在DevOps工具链中是核心的流程管理中心,负责串联系统的构建流程.测试流程.镜像制作流程.部署流程等,在持续集成中常用到的工具如下: Maven:源代码编译工具 RobotFramework:自动化测试工具 NewMan:接口自动化测试工具 SonarQube Scanner:源代码扫描工具 GitLab:代码仓库工具 Docker:镜像制作工具 kubectl:K8S工具 公司目前使用的流程是通过Redmine和GitLab中创建项目.开发提交代码.触发jenki…
1.基本概念 升级之后所有的containers会重启,因为hash值会变. 不可跨版本升级. 2.升级Master节点 当前版本 [root@k8s-master01 ~]# kubeadm version kubeadm version: &version.Info{Major:", GitVersion:"v1.11.1", GitCommit:"b1b29978270dc22fecc592ac55d903350454310a", GitTr…
1.基本概念 使用k8s安装gitlab-ce,采用GlusterFS实现持久化(注意PG使用的是NFS存储,使用动态存储重启postgresql的pod后无法成功启动pg,待解决),并集成了openLDAP. 注意:我公司使用的gitlab是独立于k8s集群之外的. 2.安装部署 最一开始使用的是helm安装gitlab,网上的文档应该全部都是使用的这个chart:https://github.com/helm/charts/tree/master/stable/gitlab-ce 但是这个c…
1.基本概念 此次安装的有Jenkins.Gitlab.Redmine,我公司目前使用的是独立于k8s集群之外单独部署的Jenkins等服务,此文章会介绍三种服务基于k8s的部署方式,之后集成之前部署的openLDAP实现统一认证.之后将进行简单持续集成持续部署的演示,最后再结合我公司的项目进行实战操作,应付出现的各种使用场景. 2.使用Helm安装redmine [root@k8s-master01 ci]# git clone https://github.com/dotbalo/helm.…
什么是发布-订阅 发布订阅是一种众所周知并被广泛使用的消息传送模式,常用在微服务架构的服务间通信,高并发削峰等情况.但是不同的消息中间件之间存在细微的差异,项目使用不同的产品需要实现不同的实现类,虽然是明智的决策,但必须编写和维护抽象及其基础实现. 此方法需要复杂.重复且容易出错的自定义代码. Dapr为了解决这种问题,提供开箱即用的消息传送抽象和实现,封装在 Dapr 构建基块中.业务系统只需调用跟据Dapr的要求实现订阅发布即可. 工作原理 Dapr 发布&订阅构建基块提供了一个与平台无关的…
什么是Actor模式 Actors 为最低级别的"计算单元" 以上解释来自官方文档,看起来"晦涩难懂".大白话就是说Actors模式是一段需要单线程执行的代码块. 实际开发中我们经常会有一些逻辑不能并发执行,我们常用的做法就是加锁,例如: lock(obj) { //dosomething... } 或者用Redis等中间件,为分布式应用加一些分布式锁.遗憾的是,使用显式锁定机制容易出错. 它们很容易导致死锁,并可能对性能产生严重影响.Actors模式为单线程逻辑提…
什么是绑定 处理外部事件或调用外部接口的功能就是绑定,绑定可以提供以下好处: 避免连接到消息系统 ( 如队列和消息总线 ) 并进行轮询的复杂性 聚焦于业务逻辑,而不是如何与系统交互 使代码不受 SDK 或外部库的强耦合 处理重试和故障恢复 Dapr提供了很多支持的绑定,请见绑定.绑定分为输入绑定与输出绑定,输入绑定是监听外部事件,触发业务逻辑.输出绑定是调用外部资源. 绑定可能与前面介绍的发布订阅类似. 尽管它们很相似,但也有不同之处. 发布/订阅侧重于 Dapr services 之间的异步通…
本篇我将带着大家一起来对Dapper进行下封装并实现基本的增删改查.分页操作的同步异步方法的实现(已实现MSSQL,MySql,PgSQL).同时我们再实现一下仓储层的代码生成器,这样的话,我们只需要结合业务来实现具体的业务部分的代码就可以了,可以大大减少我们重复而又繁琐的增删改查操作,多留点时间给生活充充电(不会偷懒的程序员不是一位好爸爸/好老公/好男朋友).如果您觉得我的实现过程有所不妥的话,您可以在评论区留言,或者加入我们的千人.Net Core实战项目交流群637326624交流.另外如…
通过 ASP.NET Core,开发者可轻松配置和管理其应用的安全性. ASP.NET Core 中包含管理身份验证.授权.数据保护.SSL 强制.应用机密.请求防伪保护及 CORS 管理等等安全方面的处理. 通过这些安全功能,可以生成安全可靠的 ASP.NET Core 应用.而我们这一章就来说道说道如何在ASP.NET Core中处理"跨站请求伪造(XSRF/CSRF)攻击"的,希望对大家有所帮助! 本文已收录至<.NET Core实战项目之CMS 第一章 入门篇-开篇及总体…
作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来,首先,请允许我长吸一口气!真没想到一份来自28岁老程序员的自白 这篇文章会这么火,更没想到的是张善友队长的公众号居然也转载了这篇文章,这就导致两天的时间就有两百多位读者朋友加入了.NET Core实战项目交流群(欢迎更多小伙伴进入交流.NET Core经验,群号:637326624)!这让我顿感亚历山大!我自己的文笔有多差我是知道的,所以就有点担心写不好…
写在前面 上篇文章我带着大家通过分析了一遍ASP.NET Core的源码了解了它的启动过程,然后又带着大家熟悉了一遍配置文件的加载方式,最后引出了依赖注入以及控制反转的概念!如果大家把前面几张都理解了,那么你也就入了ASP.NET Core的大门了.但是我们还需要一个版本控制工具来提高我们的编码效率.因此这篇文章我将带着大家了解下Git这个版本控制工具以及为什么选择它. 下面我们将通过故事的形式从Git的历史谈起,并讲述Git的强大之处.然后通过实战演练教你如何在Github以及码云上托管我们的…
前面两篇文章给大家介绍了我们实战的CMS系统的数据库设计,源码也已经上传到服务器上了.今天我们就好聊聊架构设计,在开始之前先给大家分享一下这几天我一直在听的<从零开始学架构>里面关于架构设计的定义以及架构设计的三大原则,希望能对大家有所启发.有着这些基础之后,我们再基于此搭建我们的项目框架吧!如果你在阅读的过程中有任何的问题,欢迎大家在留言区进行留言,或者加入.NET Core实战项目群637326624跟大伙一起交流经验. 本文已收录至<.NET Core实战项目之CMS 第一章 入门…
上篇给大家从零开始搭建了一个我们的ASP.NET Core CMS系统的开发框架,具体为什么那样设计我也已经在第十篇文章中进行了说明.不过文章发布后很多人都说了这样的分层不是很合理,什么数据库实体应该跟仓储放在一起形成领域对象,什么ViewModel应该放在应用层结构仓储层与UI层.其实我想说的是,这样都没问题,看你自己的理解了!我上篇文章已经说了,如果你愿意,完全可以把所有的层融合在一起,随意合并分离这个依你个人喜好. 我也是本着简单原则以及合适原则的思想来进行那样的分层结构,觉得这样层次更分…
作为后端开发的我来说,前端表示真心玩不转,你如果让我微调一个位置的样式的话还行,但是让我写一个很漂亮的后台的话,真心做不到,所以我一般会选择套用一些开源UI模板来进行系统UI的设计.那如何套用呢?今天就以我们系列实战教程中的CMS系统为例来应用第三方的后台模板LayuiCMS2.0为例来进行实战演练吧! 本文已收录至<.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划> 作者:依乐祝 首发地址 "DotNetCore实战"公众号 原文地址:https://w…
连着两天更新叙述性的文章大家可别以为我转行了!哈哈!今天就继续讲讲我们的.NET Core实战项目之CMS系统的教程吧!这个系列教程拖得太久了,所以今天我就以菜单部分的增删改查为例来讲述下我的项目分层之间的协同工作吧!如果你觉得文中有任何不妥的地方还请留言或者加入DotNetCore实战千人交流群637326624跟大伙进行交流讨论吧! 本文已收录至<.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划> 作者:依乐祝 原文地址:https://www.cnblogs.com/y…
在应用程序框架实战十四:DDD分层架构之领域实体(基础篇)一文中,我介绍了领域实体的基础,包括标识.相等性比较.输出实体状态等.本文将介绍领域实体的一个核心内容——验证,它是应用程序健壮性的基石.为了完成领域实体的验证,我们在前面已经准备好了验证公共操作类和异常公共操作类. .Net提供的DataAnnotations验证方法非常强大,Mvc会自动将DataAnnotations特性转换为客户端Js验证,从而提升了用户体验.但是客户端验证是靠不住的,因为很容易绕开界面向服务端提交数据,所以服务端…
作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/9985451.html 本来这篇只是想简单介绍下ASP.NET Core MVC项目的(毕竟要照顾到很多新手朋友),但是转念一想不如来点猛的(考虑到急性子的朋友),让你通过本文的学习就能快速的入门ASP.NET Core.既然是快速入门所以过多过深的内容我这里就一笔带过了!然后在后面的一些列文章中再慢慢的对其中的概念进行阐述. 本文已收录至.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规…
作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/9998021.html 写在前面 上篇文章我给大家讲解了ASP.NET Core的概念及为什么使用它,接着带着你一步一步的配置了.NET Core的开发环境并创建了一个ASP.NET Core的mvc项目,同时又通过一个实战教你如何在页面显示一个Content的列表.不知道你有没有跟着敲下代码,千万不要做眼高手低的人哦.这篇文章我们就会设计一些复杂的概念了,因为要对ASP.NET Core的启动及运行原…
写在前面 上篇文章我们讲了如在在实际项目开发中使用Git来进行代码的版本控制,当然介绍的都是比较常用的功能.今天我再带着大家一起熟悉下一个ORM框架Dapper,实例代码的演示编写完成后我会通过Git命令上传到GitHub上,正好大家可以再次熟悉下Git命令的使用,来巩固上篇文章的知识.本篇文章已经收入.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划 有兴趣的朋友可以加入.NET Core项目实战交流群637326624 进行交流. 作者:依乐祝 原文地址:https://ww…
写在前面 上面文章我给大家介绍了Dapper这个ORM框架的简单使用,大伙会用了嘛!本来今天这篇文章是要讲Vue的快速入门的,原因是想在后面的文章中使用Vue进行这个CMS系统的后台管理界面的实现.但是奈何Vue实现的SPA有一定的门槛,不太适合新手朋友,所以为了照顾大多数人,我准备还是采用asp.net core mvc+html+js+css+layui这个传统的技术栈来实现.但是,不管怎么说我还是会把Vue的基本使用给大伙介绍一下! 当然,如果这篇文章我也是抱着学习的态度跟大家一起来了解V…