SSH连接保持

Windows10提供了OpenSSH客户端,可以很方便的连接类Unix系统。然而在使用上,相比于Xshell等客户端,功能还比较简陋,需要进行一些定制。一个很重要的功能就是在SSH连接期间保持SSH连接不中断。总的来说,方法有三种,可根据需要选择不同方法:(1) 修改Server端的/etc/ssh/sshd_config文件# 添加配置 ClientAliveInterval 60 #server每隔60秒发送一次请求给client,然后client响应,从而保持连接 ClientAliveCountMax 3 #server发出请求后,客户端没有响应得次数达到3,就自动断开连接,正常情况下,client不会不响应 # 重启sshd服务 systemctl reload sshd(

  • Wang Chao
    Wang Chao
1 min read

Maven常用参数及其说明

Maven常用参数及其说明-h,--help                              Display help information-am,--also-make                        构建指定模块,同时构建指定模块依赖的其他模块;-amd,--also-make-dependents            构建指定模块,同时构建依赖于指定模块的其他模块;-B,--batch-mode                        以批处理(batch)模式运行;-C,--strict-checksums                  检查不通过,则构建失败;(严格检查)-c,--lax-checksums                     检查不通过,则警告;(宽松检查)-D,--define                       Define a system property-e,

  • Wang Chao
    Wang Chao
2 min read

设置max_connections

项目中可能会遇到MySQL: ERROR 1040: Too many connections”的异常情况,造成这种情况的一种原因是访问量过高,MySQL服务器抗不住,这个时候就要考虑增加从服务器分散读压力;另一种原因就是MySQL配置文件中max_connections值过小。首先,首先我们来看下mysql的最大连接数:show variables like '%max_connections%';如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于MySQL会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值。数值过小会经常出现ERROR 1040: Too

  • Wang Chao
    Wang Chao
2 min read

Linux访问Windows共享文件夹

有时候需要从Linux下访问Windows下的共享文件夹,可以采用mount挂载的方法或者samba客户端的方式进行连接。Windows创建共享文件夹首先需要打开windows的文件共享,在控制面板->网络和共享中心->更改高级共享设置->点选“启用网络发现”,“启用文件和打印机共享”。启用windows网络发现和文件共享windows创建共享文件夹有命令行和界面两种方式。1.命令行的方式如下:net share ShareDir=${your_share_dir_path} /GRANT:${user_to_share},FULL # 如果需要创建新用户,也可以直接通过命令行创建一个专门用于文件共享的用户 net user ${new_user_

  • Wang Chao
    Wang Chao
6 min read

Crontab命令

1.  键入 crontab  -e 编辑crontab服务文件。例如 文件内容如下:*/2 * * * * /bin/sh /home/admin/jiaoben/buy/deleteFile.sh保存文件并并退出。*/2 * * * * 通过这段字段可以设定什么时候执行脚本;/bin/sh /home/admin/jiaoben/buy/deleteFile.sh 这一字段可以设定你要执行的脚本,这里要注意一下bin/sh 是指运行  脚本的命令  后面一段时指脚本存放的路径2. 查看该用户下的crontab服务是否创建成功,

  • Wang Chao
    Wang Chao
6 min read
SSL

Let`s Encrypt证书配置

为了在网站上启用HTTPS, 我们需要从证书颁发机构获取证书文件。以往,普通个人用户获取证书比较困难。尽管有些证书机构提供免费证书,但只能用于单域名,且有效期比较短,不是很实用。Let`s Encrypt是一个公共的颁发免费SSL证书的机构,由Mozilla、Cisco、Akamai、IdenTrust、EFF等组织人员发起,主要的目的也是为了推进网站从HTTP向HTTPS过度的进程,目前已经有越来越多的商家加入和赞助支持。到目前为止,Let's Encrypt可以应用且支持包括FireFox、Chrome在内的主流浏览器的兼容和支持,也有不少的用户在自有网站项目中正式使用。Let’s Encrypt 由于是非盈利性的组织,需要控制开支,他们搞了一个非常有创意的事情,设计了一个 ACME 协议,目前该协议的版本是

  • Wang Chao
    Wang Chao
13 min read

Spring Cloud项目中的Swagger聚合

在使用SpringCloud搭建分布式应用的过程中,我们需要暴露每个微服务的Swagger接口文档,方便开发交互。为了避免暴露内部服务,我们希望能够将所有微服务的接口文档聚合起来。这样所有开发人员只需要访问统一的Swagger界面即可。Swagger的接口文档Api和页面Swagger本身提供一个单页面的接口文档,所有数据通过和springfox.documentation.swagger.web.ApiResponseController交互获得。首先通过"/swagger-resources"获取swagger资源信息,得到的响应结果如下:[ { name: "default", url:"/v2/api-docs", swaggerVersion:"2.0", location:"/v2/api-docs" } ]可以看出,swagger资源信息是一个个接口组构成的数组,每个接口组包含一些属性描述这个接口组,其中name是swagger生成的接口组的组名。如图所示。url代表swagger接口组的信息获取地址,

  • Wang Chao
    Wang Chao
4 min read

Shiro中的扩展点:Realm

Realm翻译作域,Shiro框架从中获取安全数据(如用户、角色、权限)。当SecurityManager验证用户身份或者授予权限时,需要从Realm中获取数据信息进行验证,可以将Realm看作Shiro框架的数据访问层。因此,Realm往往也是我们实现安全功能时最需要自定义和扩展的位置。Realm的基础介绍一个典型的Realm的接口如下:String getName(); //返回一个唯一的Realm名字 boolean supports(AuthenticationToken token); //判断此Realm是否支持此Token AuthenticationInfo getAuthenticationInfo(AuthenticationToken token) throws AuthenticationException; //根据Token获取认证信息在一个应用程序中,可以存在一个Realm或者多个Realm。一个典型的Realm实现如下:public class MyRealm1 implements Realm

  • Wang Chao
    Wang Chao
4 min read
Security

基于Shiro实现认证与授权

Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能,可以应用于各种类型的应用程序。相比Spring Security,它更加小巧简单,使用更加方便,很适合在实际工作中解决实际项目问题。Shiro的基本功能Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境。Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与 Web 集成、缓存等。这不就是我们想要的嘛,而且 Shiro 的

  • Wang Chao
    Wang Chao
16 min read
Bug fix

使用证书实现Https服务中的异常

SSL: error:0200100D:system library:fopen:Permission denied:fopen(xxx)如果在启动nginx时显示无权限访问证书文件,可能时selinux处于enforcing mode(Fedora的默认模式)。可以通过查看审核日志查看访问错误:ausearch -m avc -ts today | audit2allow这可能是由于使用mv命令,而不是cp命令移动证书文件导致的,mv命令并不会正确的保留文件安全信息。 ls -lrtZ /etc/nginx/cert/* 可以通过下面的命令修复restorecon -v -R /etc/nginx/

  • Wang Chao
    Wang Chao
1 min read
CentOS

配置swap增强云服务器性能

前言随着云服务的普及,很多人都购买了云主机来部署一些简单的服务,但通常出于成本的考虑,不会购买特别大型的机器,在有限的硬件资源下,如何让服务器响应更快?如何避免应用出现内存不足的错误?最简单的方法就是增加交换空间(Swap)。Swap是存储盘上的一块自留地,操作系统可以在这里暂存一些内存里放不下的东西。这从某种程度上相当于增加了服务器的可用内存。虽然从swap读写比内存慢,但总比没有好,算是内存不够时的安全网。如果没有swap,则服务器一旦内存不足,就会开始终止应用以释放内存,甚至会崩溃,这会让你丢失一些还没来得及保存的数据,或者造成当机。有些应用明确要求系统配置swap以确保数据访问的可靠性。在Windows系统中,这种交换空间叫做虚拟内存,可以在系统->高级->性能->虚拟内存中进行配置。Linux系统下的交换空间配置略为不方便。因此,

  • Wang Chao
    Wang Chao
10 min read
Ghost

基于开源Isso实现Ghost的评论系统

Isso是一个轻量级的第三方评论系统,允许匿名评论、注册评论、邮件通知、自定义外观等功能。Isso基于Python实现,因此可以很方便的修改代码,自定义外观或者扩展新的功能。Isso可以通过Docker或者源代码安装,具体可以参考官网文,此处不再赘述。其关键在于服务端和客户端的配置。服务端配置核心配置就三条。[general] dbpath = /var/lib/isso/comments.db host = https://example.tld/ [server] listen = http://localhost:1234/dbpath数sqlite数据库的路径。host是要绑定评论系统的网站的地址,如果有多个,需要依次输入,

  • Wang Chao
    Wang Chao
2 min read
Docker

运行中的Docker容器增加端口映射

在使用Docker部署服务时,有时候会因为新的需求,变更或者增加容器中的服务端口,为了不中断容器的运行,我们需要为运行中的Docker容器动态增加端口映射。整体来说,可通过以下方案实现。一.Docker宿主机的iptables命令Docker容器的端口映射是通过宿主机的iptables实现的,我们可以通过控制宿主机的iptables实现容器的端口映射,类似路由器中设置路由端口映射。容器已有的端口映射规则存储在nat表的DOCKER链中,可以通过以下命令查看。sudo iptables -t nat -vnL DOCKER //输出 Chain DOCKER target prot opt source destination RETURN all -- 0.0.0.

  • Wang Chao
    Wang Chao
2 min read
Bug fix

你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问

此问题需要修改Win10 网络策略 按window+R键输入gpedit.msc 来启动本地组策略编辑器。 依次找到“计算机配置-管理模板-网络-Lanman工作站”这个节点,在右侧内容区可以看到“启用不安全的来宾登录”这一条策略设置。状态是“未配置”。 双击“启用不安全的来宾登录”这一条策略设置,将其状态修改为“已启用”并单击确定按钮。 设置完成再次尝试访问发现可以正常访问了。

  • Wang Chao
    Wang Chao
1 min read

Hyper-V 虚拟机扩展磁盘

在使用虚拟机的时候,会经常遇到虚拟硬盘空间不足的情况。本文对Hyper-V的虚拟机硬盘扩容方法进行整理记录,为大家提供参考。本文的内容基于Win10 Pro系统上的Hyper-V虚拟机进行实例演示。Hyper-V虚拟机硬盘扩展需要两步:第一步,扩展虚拟硬盘大小;第二步,扩展虚拟机操作系统的文件系统硬盘,本文将介绍Win7虚拟机和CentOS虚拟机的硬盘扩展方法。虚拟硬盘扩容Hyper-V虚拟机硬盘扩容的第一步是扩大虚拟机的VHD虚拟硬盘。注意需要关闭正在使用虚拟硬盘的虚拟机。进入虚拟硬盘扩容界面有两种操作,一种是在Hyper-V的操作栏点击编辑磁盘(Fig.1),选择虚拟硬盘文件路径(Fig.2),然后选择扩展操作(Fig.5);另一种是点击虚拟机的设置操作(Fig.1),点击虚拟硬盘选项下的编辑操作(Fig.3),确认后(Fig.4)

  • Wang Chao
    Wang Chao
8 min read

shell获取进程ID的方法: pidof | pgrep | ps-A+grep+awk

ps -A |grep "cmdname"| awk '{print $1}'pidof "cmdname"pgrep "cmdname"这三种在bash和busybox ash里面的运行结果稍有不同,第一种完全相同,但是因为调用命令次数较多,性能上是不行的。第二种: pidof 只能获取程序的文件名匹配到的进程号,在ash中 比如 pidof "usr/bin/telnetd" 和 pidof "telnetd"中结果不一样, 前一种结果为空,但是在bash中执行两者一样。第三种:

  • Wang Chao
    Wang Chao
1 min read

家庭宽带部署公共应用服务端口被封的解决方案

A按照国家有关部门要求,为配合推进ICP网站备案,电信运营商统一关闭了家庭宽带用户的常用服务端口如80,8080等入向流量。如果需要利用家里的服务器自建应用服务,在部署时需要注意这个问题。总的来说,解决办法有以下几种:绕过被封的端口,使用其他端口,如81,8181。此方法的优势在于简单易行,如果是自用服务,推荐使用此方法,缺点在于访问时必须带端口。利用花生壳、nat123等动态域名服务进行端口映射,实现不带端口访问。优势在于免费,利用域名映射可不带端口访问。缺点在于流量限制,速度慢,适合访问频率不高,流量小的服务。利用云服务器转发。利用云服务器上的nginx对家里的服务器进行反向代理,也可实现不带端口访问。优势在于不受限制,缺点在于云服务器和流量会产生费用。适合比较正式的服务使用。使用443端口。443端口尚未被屏蔽,

  • Wang Chao
    Wang Chao
2 min read

FastDFS数据迁移和恢复

FastDFS的数据迁移分为:同IP迁移和不同IP迁移两类。同IP数据迁移首先关闭fdfs_storage和fdfs_tracker服务。拷贝fdfs_storage目录中的所有数据到新目录。修改storage配置文件中的store_path和base_path到新位置。修改mod_fastdfs.conf配置文件中的store_path和base_path到新位置。根据情况,选择是否修改client配置文件。修改nginx配置文件中的root目录。重启fdfs_tracker和fdfs_storage服务不同IP数据迁移不同IP之间迁移采用FastDFS的扩容机制。在新服务器安装FastDFS。将新FastDFS的storage服务实例关联到以前的tracker服务。拷贝以前的storage服务配置为新服务实例的配置文件。启动storage服务。FastDFS会自动同步以前服务器上的数据。停止storage服务,将storage配置文件中的tracker地址修改为新的tracer 地址。启动新的tracker服务和storage服务。数据恢复数据恢复是指旧的FastDFS服务已经不能运行,需要将已有的FastDFS数据恢复到新的FastDFS服务中。如果FastDFS服务使用了V4的ServerID特性,

  • Wang Chao
    Wang Chao
1 min read

P2P中的NAT类型检测方法和穿越方式

内容目录基本概念基本的NAT类型:只转换IP,不转换端口NAPT:转换整个Endpoint (IP:PORT)网络类型检测步骤检测主机是否位于NAT后步骤检测NAT是否是完全锥型步骤检测NAT是否是对称型的步骤检测NAT是限制型还是端口限制型穿越方法介绍简介直接通信打洞穿越反向穿越端口预测根据NAT类选择穿越方法穿越方法一览表客户端的实现流程图基本概念1、基本的NAT类型:只转换IP,不转换端口一个基本NAT往往需要具有多个公网IP来满足多个内网节点中具有相同端口的应用程序的同时访问。由于这种类型的NAT设备限制大,现在已不常见。2、NAPT:转换整个Endpoint (IP:PORT)现在常用的NAT类型是NAPT,NAPT是一种向外的NAT类型("向外"指内网访问别人不受限,别人访问内网受限),根据限制的不同分为以下四种类型:    (1)完全锥型(FULL CONE NAT)    (2)限制锥型(RESTRICT CONE NAT)

  • Wang Chao
    Wang Chao
5 min read

修复usb设备描述符请求失败

在Win10系统中,有时候会出现USB设备描述符请求失败的错误(错误码43)。此时,我们会发现系统无法识别和读取我们的USB设备。这种问题,可能由于设备本身或者系统两个方面的原因引起。设备本身出问题在于一是硬件损坏,此时我们无法修复。二是设备驱动可能过时,此时需要更新设备驱动。三是设备插入接触不稳定,此时我们可以通过卸载设备,拔出设备接口重新插入观察是否解决问题。如果尚未解决,则可以尝试从系统端解决这个问题。查看设备实例属性设备管理器 -> 通用串行总线控制器 -> 未知USB设备(设备描述符请求失败)->属性2. 查看设备实例路径属性->详细信息->设备实例路径3、regedit

  • Wang Chao
    Wang Chao
2 min read

FastDFS安装配置

FastDFS 是用 c 语言编写的一款开源的分布式文件系统。FastDFS 为互联网量身定制, 充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。FastDFS 架构包括 Tracker server 和 Storage server。客户端请求 Tracker server 进行文 件上传、下载,通过 Tracker server 调度最终由 Storage

  • Wang Chao
    Wang Chao
6 min read

Gitlab的汉化

Gitlab本身并未提供中文版的界面,因为部分人可能对英文不熟,我们可能需要把英文版汉化。汉化Gitlab的方式,总的来说有两种方式:1. 用git比对出英文与中文的补丁,将英文打补丁2. 直接下载中文版,替换英文一、手工安装与升级推荐按照 gitlab-ce 源代码中 doc/install/installation.md 的内容手工安装 GitLab 中文版本。相关修改只需要在 Clone the Source 步骤中使用 larryli/gitlab.git 仓库和当前版本的 8-8-zh 即可。对于中国大陆境内的服务器用户,可以使用

  • Wang Chao
    Wang Chao
4 min read

基于Docker快速部署Redmine

Redmine 是一个开源的、基于Web的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及进度可视化显示。同时它又支持多项目管理。Redmine是一个自由开放 源码软件解决方案,它提供集成的项目管理功能,问题跟踪,并为多个版本控制选项的支持。它建立在Ruby on Rails的框架之上,支持跨平台和多种数据库。基于Docker安装RedmineDocker的安装不再赘述。安装后,运行下面的脚本安装Redmine.#!/bin/sh docker ps -a|grep redmine if [ $? -eq 0 ]; then read -r -p "Are you

  • Wang Chao
    Wang Chao
7 min read
IoT

工业互联网平台之江湖!

去年十月底金庸大侠去世,让“江湖”与“侠侣”等武侠冷词重出江湖,一下子变为热词。由凉变热的,还有那首曾经脍炙人口、谁都能哼唱两句的“沧海一声笑”,在金大侠去世的当天,此曲就一再在大街小巷、楼堂馆所中的各个收音机、耳机中响起:沧海笑,滔滔两岸潮,浮沉随浪只记今朝。苍天笑,纷纷世上潮,谁负谁胜出天知晓。江山笑,烟雨遥,涛浪淘尽红尘俗事知多少?清风笑,竟惹寂寥,豪情还剩了一襟晚照。苍生笑,不再寂寥,豪情仍在痴痴笑笑。啦啦啦……。看到这首歌词,笔者心里先是感受到了一丝暖意,

  • Wang Chao
    Wang Chao
20 min read
Workflow

[转]纵观 jBPM:从 jBPM3 到 jBPM5 以及 Activiti5

对jBPM来说,今年最大的事件莫过于 jBPM 的创建者Tom Baeyens离开 JBoss 了。Tom Baeyens 离开的具体原因尚不清楚,但他的离开产生了两个结果:一是 jBPM 的下一个版本 jBPM5 完全放弃了 jBPM4 的基础代码,基于Drools Flow重头来过;二是 Tom Baeyens 加入Alfresco后很快推出了新的基于 jBPM4 的开源工作流系统Activiti。由此不难推测 Tom Baeyens 离开的部分原因:JBoss 内部对 jBPM

  • Wang Chao
    Wang Chao
18 min read
SSL

自签名证书

当我们需要在企业内部或者测试环境中使用证书时,往往需要创建自签名证书。Linux系统中的Openssl工具可以用来生成自签名证书,实现通信的加密,也可以基于自签名的CA证书模拟实际CA信任链的工作过程。本文基于Openssl介绍自签名证书的生成和应用实践。自签名证书分为自签名私有证书和自签名CA证书两种。自签名私有证书无法被吊销,自签名CA证书可以被吊销。能不能吊销证书的区别在于如果私钥不小心被恶意获取,如果证书不能被吊销那么黑客很有可能伪装成受信任的客户端与用户进行通信。如果你的规划需要创建多个客户端证书,那么使用自建 CA 签名证书的方法比较合适,只要给所有的客户端都安装了 CA 根证书,那么以该 CA 根证书签名过的客户端证书都是信任的,不需要重复的安装客户端证书。请注意由于是自建 CA 证书,在使用这个临时证书的时候,会在客户端浏览器报一个错误,签名证书授权未知或不可(signing certificate authority is unknown

  • Wang Chao
    Wang Chao
7 min read

Https和CA证书

HttpsHttps是安全版的Http (Hyper Text Transfer Protocol, 超文本传输协议),即在Http中加入了SSL (Secure Socket Layer)等安全协议实现加密通信。用于Https的安全协议有SSL和它的继任者TLS (Transport Layer Security)两种。SSL主要有1.0, 2.0, 3.0三个版本,现已不再更新。TLS改进了SSL 3.0的摘要算法和加密算法,在某些场合也被认为是SSL 3.1。SSL和TLS协议均可工作在TCP或者UDP连接智商,主要规定了通信双方的身份认证,算法协商,密钥交换等机制。

  • Wang Chao
    Wang Chao
5 min read

在容器中使用docker命令:DinD vs DooD

在Docker中使用Docker有两种方式,区别在于环境是否与宿主隔离开来。本文以在Jenkins中使用Docker为例,说明如何通过加载宿主Docker socket和程序达成重用宿主镜像的目的。文章最后还讨论了这一方式面临的安全问题,务必在实际使用时加以考虑。在本文中,我们将快速了解一下如何在一个容器里装载Docker sock以便创建其“兄弟”容器。我的一个同事称之为DooD(Docker-outside-of-Docker),以区别于DinD(Docker-in-Docker),后者是在容器中安装一个完整的隔离的Docker版本。DooD比DinD简单得多(至少在配置方面),尤其是能重用并缓存宿主上的镜像。反之,如果你想实现镜像对宿主的隐藏和隔离,则最好使用DinD。为说明DooD的工作方式,我们将在一个Jenkins容器内使用DooD,从而能在Jenkins任务中创建并测试容器。我们希望使用Jenkins用户来创建这些容器,因此会比使用root用户稍微麻烦些。这有点很像Pini Reznik在“使用Docker、Mesos实现持续交付”中描述的技术,

  • Wang Chao
    Wang Chao
4 min read

Spring Boot 配置文件访问

Spring Boot遵循“习惯优于配置”原则,即项目中内置一个习惯性配置,开发者无需动手配置或者只需要少量配置即可让应用快速运行。那么,在Spring Boot应用中如何访问配置文件呢?配置文件位置和优先级Spring Boot的配置文件默认名称为application.properties或application.yml,其位置主要有三个地方:内置,开发目录下ClassPath根目录资源/src/main/resouces,或Config包内/src/main/java/config。外置,应用运行目录根目录或者config子目录内Config Server,由配置服务统一管理在配置文件读取时,按照Config Server>外置>

  • Wang Chao
    Wang Chao
4 min read

Spring Cloud 配置管理

基于Spring Cloud的应用通常由多个Spring Boot微服务构成。每个微服务均需要一些如数据库地址,用户名/密码,缓存服务地址等通用配置。因此,我们需要统一管理这些配置,实现:多个微服务使用统一配置,如不同服务使用同一数据库,和同一微服务使用不同配置:如开发、测试、发布,两种场景下的配置同步与维护。Spring Cloud提供了一个基于Config Server的配置管理方案,通过将所有配置文件放在共享存储中,基于版本管理实现不同场景下的配置文件的管理。原理其基本原理如下图所示。config server 原理一般实践中会配置多个Config Server实例,以实现高可用。配置以文件形式存储在版本管理工具如:Git,码云,SVN等,或本地文件系统中。

  • Wang Chao
    Wang Chao
5 min read

Gitlab初体验

特性:跨平台,支持大部分操作系统基于脚本构建,支持所有语言基于Pipeline连接不同阶段的工作流支持docker缺点:将部署固化在.gitlab-ci文件中,部署环境需要稳定Runner可访问所有发布机器,存在一定安全性问题程序发布没有审计,在大公司存在权限管理问题安装gitlabversion: '3.3' services: gitlab: image: 'gitlab/gitlab-ce' restart: unless-stopped hostname: '${your_domain_name}' container_name: gitlab environment: TZ: 'Asia/Shanghai' GITLAB_OMNIBUS_

  • Wang Chao
    Wang Chao
3 min read

DNS服务及常见问题

DNS(Domain Name System)一种层次化组织的用于TCP/IP网络的网络服务命名系统,实现域名和实际IP地址之间的转换。DNS是一种应用层协议,基于UDP,通过53端口通讯。其工作过程如下:用户主机上的应用(如浏览器)抽取URL中的域名段,首先在应用缓存中查询,再在hosts文件中查询,如果找到就返回对应IP地址。如果没有找到,应用将域名发送给用户主机上的DNS客户端,DNS客户端首先查询本地DNS缓存,如果有则 返回,如果无则向DNS服务器通过53端口,发送一查询报文(UDP),包含域名。3. DNS服务器首先查询区域配置,如果有则返回结果,完成域名解析,此域名解析具有权威性。4. 如果不在本地配置区域,

  • Wang Chao
    Wang Chao
2 min read

Windows开启托管网络脚本

网上的大多数脚本之解决了Hostednetwork的设置和开启,未实现关于网络共享部分的命令行实现。网络共享部分主要使用了ICS(Internet connect share)服务,可在服务列表中找到对应服务, 服务名称为(SharedAccess).开启/关闭SharedAcess服务#开启 net start sharedaccess #设置为自动启动/也可以直接修改注册表#HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Start sc config sharedaccess start=auto #关闭 net

  • Wang Chao
    Wang Chao
2 min read
Micro-Service

[转]微服务架构落地实践(中):策略

如果微服务架构落地实践(上)中的5点都让你膝盖中箭,那么根据个人的经验,综合解决微服务实施难点的第一步就是:1.以始为终,构建一个独立的敏捷微服务团队我们对微服务的期待就是:可以独立开发,独立部署,并且去中心化管理。那么我们就需要先构造一支“可独立开发、独立部署、并且去中心化管理”的团队。这个团队为了达到这个目标,会采取各种办法(如:DevOps, 全功能团队)解决阻碍实现“独立开发、独立部署、去中心化管理”的问题。而根据康威定理,系统架构会慢慢向去中心化方向发展。一定要意识到,这个过程会打破大型系统自上而下的既有流程,并采用更有生产力的方式构建新的组织架构。你所要做的就是充分信任团队,把它看作一个微型的技术管理创新。

  • Wang Chao
    Wang Chao
16 min read
Micro-Service

[转]微服务架构落地实践(上):难点

难点1:“一步到位”的认知错觉这些年微服务大红大紫,但真正能够拿出来作为可实践的案例少之又少。大部分微服务案例只能看到微服务架构的“演进结果”,但看不到“演进过程”。这就像每个人看到一个架构的高峰,却没有看到攀登高峰的路径。这给了很多架构师一种假象:为服务的架构是通过能力极高的架构师一步到位设计出来的。这和很多团队自上而下的架构设计感受相似。于是很多架构师们蜂拥而至,各种分析方法层出不穷,讨论和分享络绎不绝,然而真正落地的却很少,使得微服务在网络上慢慢变成了一种“玄学”:微服务实施在“理论研究”的阶段。这违反了软甲架构的最基本规律:架构是随着当前的需求和痛点演进的,无法对没有出现的问题和痛点进行设计。因此,一步到位的整体式微服务架构设计完全没有必要。况且一个集中化的设计,很难体现微服务的轻量级优势。我相信技术的发展一定是向不断降低成本的方向上发展的。如果新技术没有降低成本,反而提升了成本,要么这个新技术有问题,

  • Wang Chao
    Wang Chao
9 min read

N2N虚拟局域网搭建

和号称下一代VPN协议的WireGuard相比,N2N是一个经历了多年验证的p2p组网工具,可满足小规模机器集群的VPN使用需求。N2N的版本N2N目前主要有n2n_v1, n2n_v2,n2n_v2s三个版本,v1加密等级低速度快,v2加密等级高速度慢。v2s是meyerd对v2版本的强化,更稳定,更容易直连,因此一般选择v2s版本。n2n_v2.4是n2n作者ntop在经历数年停更后的再一次翻新,目前尚不稳定,不推荐使用。n2n适用于Unix系和Windows系的多个平台,可以通过在不同平台编译,生成对应版本。n2nwinGui是windows平台的一个带UI的发行版本,hin2n是对应的Android手机的发行版本。编译安装安装比较简单,网络上的教程也很多,关键在于组网的所有机器使用统一版本的n2n.在本文中,我们统一安装N2N_v2s版本。Linux安装#需要cmake工具支持,

  • Wang Chao
    Wang Chao
8 min read
WebRTC

[译]WEBRTC开发框架Kurento和Jitsi的比较

Kurento和Jitsi是基于WebRTC的开源媒体服务器开发的两大开源框架,乍看到这两个项目,很难知道他们有什么具体区别,本文对这两个框架进行点对点的比较。如果你仅仅想获得一个简单的类似“项目中应该用Kurento”或者“Jitsi解决所有问题”的结论,无疑这篇文章很难帮助到你。Kurento和Jitsi的选择往往取决与你的项目目标。由于这个问题很多人在不同的场合问过我,所以我觉得有必要分享下我的观点。现在,我来解释下我是如何区分这两个项目的。Jitsi VideobridgeJitsi是一个SFU开源框架,由Atlassian维护,被集成到HipChat中。Github上的介绍如下:Jitsi Videobridge is an XMPP server component that allows for multiuser video communication.

  • Wang Chao
    Wang Chao
3 min read

Openshift初体验

Windows机器虚拟化如果实验环境为windows机器,首先需要虚拟化创建linux实验环境#开启Hyper-V组件 #控制面板->程序和功能->Windows功能->勾选Hyper-V #新建Linux虚拟机 #下载CentOS镜像,新建->按照提示进行虚拟机创建,网络可选择内部网络或者外部网络,一个是Host子网+Nat方案,一个是桥接外部局域网方案。默认使用内部网络方案。 域名方案# 本次实验包括一个master节点和三个普通节点,配置四个域名 # 如果有自己的域名和公网IP,可实现多云,混合云部署 # 没有公网IP可通过VPN实现多云混合云部署,部署过程和内网部署一致 # 在内网部署时,可通过自建的域名服务器或/etc/hosts文件实现任意域名解析 # 注意最好不要和常用域名重复,

  • Wang Chao
    Wang Chao
5 min read