基于阿里云 DNS API 实现的 DDNS 工具

0.简要介绍 0.1 思路说明 AliDDNSNet 是基于 .NET Core 开发的动态 DNS 解析工具,借助于阿里云的 DNS API 来实现域名与动态 IP 的绑定功能。工具核心就是调用了阿里云 DNS 的两个 API ,一个 API 获取指定域名的所有解析记录,然后通过比对与当前公网 IP 是否一致,一致则不进行更改,不一致则通过另外一个修改 API 来修改指定子域名的修改记录。 0.2 使用说明 使用时请更改同目录下的 settings.json.example 为 settings.json 文件,同时也可以显示通过 -f 参数来制定配置文件路径。例如: 1 2 dotnet ./AliDDNSNet.dll -f ./settings.json2 ./AliDDNSNet -f ./settings.json3 NAS 运行效果图: 0.3.配置说明 通过更改 settings.json/settings.json.example 的内容来实现 DDNS 更新。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 { // 阿里云的 Access Id "access_id": "", // 阿里云的 Access Key "access_key": "", // TTL 时间 "interval": 600, // 主域名 "domain": "example.

CentOS 7.4 安装 K8S v1.11.0 集群所遇到的问题

0.引言 最近打算将现有项目的 Docker 部署到阿里云上面,但是之前是单机部署,现在阿里云上面有 3 台机器,所以想做一个 Docker 集群。之前考虑是用 Docker Swarm 来做这个事情的,不过后面看了一下现在 K8S 用的比较多,进而想在这三台机器上部署 K8S 集群。 下面附上 Kubernetes 介绍: Kubernetes 是 Google 团队发起的开源项目,它的目标是管理跨多个主机的容器,提供基本的部署,维护以及运用伸缩,主要实现语言为 Go 语言。Kubernetes 是: 易学:轻量级,简单,容易理解 便携:支持公有云,私有云,混合云,以及多种云平台 可拓展:模块化,可插拔,支持钩子,可任意组合 自修复:自动重调度,自动重启,自动复制 看上去很牛掰的样子,下面我们就开始来部署吧。 1.准备工作 万事开头难,本来如果没墙的话就没有这么多破事,首先我们要先配置好安装 Kubernetes 所需要的必备环境,这里我没有采用从零开始安装 Kubernetes 的方式,而是使用了 Kubeadm 来进行 K8S 集群的安装与配置。 1.1 安装 Docker-CE 关于如何在 CentOS 安装 Docker-CE 的文章大家可以看一下我 这篇文章 ,几分钟的事情就可以安装完毕。 1.2 安装 Kubeadm 安装 Kubeadm 首先我们要配置好阿里云的国内源,执行如下命令: 1 2 3 4 5 6 7 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 EOF 之后呢,执行以下命令来重建 Yum 缓存:

Abp 源码分析:六、工作单元的实现

0.简介 在 Abp 框架内部实现了工作单元,在这里讲解一下,什么是工作单元? Unit Of Work(工作单元)模式用来维护一个由已经被业务事物修改(增加、删除或更新)的业务对象组成的列表。Unit Of Work模式负责协调这些修改的持久化工作以及所有标记的并发问题。在数据访问层中采用Unit Of Work模式带来的好处是能够确保数据完整性。如果在持久化一系列业务对象(他们属于同一个事物)的过程中出现问题,那么应该将所有的修改回滚,以确保数据始终处于有效状态。 而在 Abp 的内部则是结合 Castle 的 Dynamic Proxy 拦截 UnitOfwork Attribute 来进行动态代理注入,实现了当执行标注了 [UnitOfwork] 方法时能够通过 UnitOfworkManager 来进行事务控制。 其大概流程如下: 1 启动流程 首先我们来看一下 Abp 内部是什么时候注入 UOW 相关的代码的,翻阅源码,在 AbpBootstrapper 内部我们就可以看到 Abp 作者为 UOW 写了一个拦截器,并且在 Abp 框架初始化的时候就通过 AddInterceptorRegistrars() 方法来监听 IocManager 的组件注册事件,当触发事件的时候就来判断是否满足条件,如果满足则将拦截器与该类型进行一个绑定。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 public class AbpBootstrapper : IDisposable { private AbpBootstrapper([NotNull] Type startupModule, [CanBeNull] Action<AbpBootstrapperOptions> optionsAction = null) { // 其他代码 if (!

Abp 源码分析:五、系统设置

0.简要介绍 Abp 本身有两种设置,一种就是 上一篇文章 所介绍的模块配置 Configuration,该配置主要用于一些复杂的数据类型设置,不仅仅是字符串,也有可能是一些 C# 运行时的一些变量。另外一种则是本篇文章所讲的 Setting,Setting 主要用于配置一些简单的参数,比如 SMTP 地址,数据库连接字符串等一些基本的配置类型可以使用 Setting 来进行处理。 1.代码分析 1.1 启动流程 我们先来看一下设置是怎样被加入到 Abp 框架当中,并且是如何来使用它的。 在 Abp 框架内部开发人员可以通过 ISettingsConfiguration 的 Providers 属性来添加自己实现的 SettingProvider ,而 ISettingsConfiguration 的初始化是在上一篇文章所写的 AbpBootstrapper.Initialize() 里面进行初始化的。 开发人员通过继承 SettingProvider 来提供这些设置信息,并且在模块的 PreInitialize() 方法当中通过 Configuration 来添加书写好的配置提供者。 在模块进行初始化之后(也就是在 PostInitiailze() 方法内部),所有开发人员定义的 SettingProvider 通过 ISettingDefinitionManager 的 Initialize() 方法存储到一个 Dictionary 里面。 1 2 3 4 5 6 7 8 9 10 public sealed class AbpKernelModule : AbpModule { // 其他代码 public override void PostInitialize() { // 其他代码 IocManager.

使用 SonarQube 来分析 NetCore 项目代码问题

0.介绍 Sonar 是一款开源的代码分析工具,可能有很多人已经用过,本篇文章主要是讲解如何在 Docker 里面安装 Sonar 并且用其来分析 .Net Core 项目。 Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。 与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。 1.安装 安装的话,秉承一贯的懒人原则,在本篇文章当中是直接使用的 Sonar 的 Docker 镜像来进行安装配置的。 1.1 安装 Docker 安装 Docker-CE 的教程在我的**这篇文章**里面有讲到过,这里就不再多加赘述。 1.2 建立私有网络 执行以下命令: 1 docker network create sonar 将会创建一个 Docker 内部网络,名字为 sonar。 1.2 启动 PostgreSql 容器 使用以下命令拉取 **PostgreSql **的镜像: 1 docker pull postgres 然后我们启动一个 PostgreSql 容器,名字叫做 sonar-db。 1 docker run -d --name sonar-db --network sonar -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar postgres 这里启动容器的时候指定了容器的网络是 sonar-db ,那么后面在 sonar 容器启动的时候加入这个网络即可,其余两个环境变量是用作 PostgreSql 数据库默认的账号密码。
Built with Hugo
主题 StackJimmy 设计