getty

Dubbo-go 发布 1.5 版,朝云原生迈出关键一步

断了今生、忘了曾经 提交于 2020-08-04 11:36:01
作者 | 于雨、何鑫铭 等 引语 计算机技术浪潮每 10 年都有一次技术颠覆,相关知识体系最迟每 5 年都会革新一次,大概每两年贬值一半,在应用服务通信框架领域亦然。凡是有长期生命的通信框架,大概有 5 年的成长期和 5 年的稳定成熟期。每个时代都有其匹配的应用通信框架,在 20 年前的 2G 时代,强跨语言跨平台而弱性能的 gRPC 是不会被采用的。 每个通信框架,不同的人从不同角度看出不同的结论:初学者看重易用易学,性能测评者注重性能,应用架构师考虑其维护成本,老板则考虑则综合成本。一个应用通信框架的性能固然重要,其稳定性和进化能力更重要,得到有效维护的框架可在长时间单位内降低其综合成本:学习成本、维护成本、升级成本和更换成本。 **什么是 Dubbo-go?**第一,它是 Dubbo 的 Go 语言版本,全面兼容 Dubbo 是其第一要义;第二,它是一个 Go 语言应用通信框架,会充分利用作为云原生时代第一语言---Go 语言的优势,扩展 dubbo 的能力。 2008 年诞生的 Dubbo 已有十多年历史,依靠阿里和其社区,历久弥新。2016 年发布的 Dubbo-go 也已进入第五个年头,如今全面兼容 Dubbo v2.7.x 的 Dubbo-go v1.5 终于发布了。 回首过往,Dubbo-go 已经具备如下能力: 互联互通:打通了 gRPC 和 Spring

容器技术之LXC

你离开我真会死。 提交于 2020-07-27 23:02:50
  什么是容器?在生活中我们常见的容器有各种瓶瓶罐罐、各种能够容纳其它物料的东西叫容器;容器的特点就是有着很好的隔离作用,使得不同的物料互相隔离;除此之外容器还方便运输、方便储存;这是生活中所说的容器,以及它的特点;在计算机领域中,所谓容器不外乎也有同生活中的容器的特点,隔离,方便“运输”(计算机中的运输我们叫移植,从系统A到系统B),方便“存储”(这里指程序以及运行所依赖的库文件打包,即程序及运行时环境打包);LXC是Linux containers的缩写,意思就是Linux 容器;Linux容器技术其实就是整合内核的功能,让其支持多个容器运行时资源相互隔离;我们知道内核的功能用户是无法直接操作的,必须得有一用户空间的软件,通过系统调用去操作内核功能;所以lxc就是用来操作Linux内核容器化的工具;这种逻辑有点类似iptables,iptables本身不对用户的报文做任何检查,真正生效的是内核netfilter;   LXC关键技术点:   1、chroot:根切换,一个改变当前运行进程以及其子进程的根目录的操作。一个运行在这种环境的程序无法访问根目录外的文件和命令。   2、namespaces:名称空间,LXC在隔离控制方面依赖于Linux内核的namespace特性,具体而言就是在clone时加入相应的flag;   3、CGroups:控制组

Linux下的进程分析–PS

谁说我不能喝 提交于 2020-07-25 12:56:01
当我们在 Linux系统 下要对进程进行监测和控制时,首先必须要了解当前进程的情况,也就是需要查看当前进程,ps 命令 就是最基本进程查看 命令 。今天小编就来带领大家一起学习 Linux 下分析进程的命令--PS。 1. ps是什么? 要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,ps命令就是最基本进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等.总之大部分信息都是可以通过执行该命令得到。 ps是显示瞬间进程的状态,并不动态连续;如果想对进程进行实时监控应该用top命令。 基本参数: -A :所有的进程均显示出来,与 -e 具有同样的效用; -a :显示现行终端机下的所有进程,包括其他用户的进程; -u :以用户为主的进程状态 ; x :通常与 a 这个参数一起使用,可列出较完整信息。 输出格式规划: l :较长、较详细的将该PID 的的信息列出; j :工作的格式 (jobs format) -f :做一个更为完整的输出。 下面我们就来一个命令进行实践,看看不同的参数都有些什么效果。 2. 不加参数执行ps命令会输出什么? 这是一个基本的 ps 使用,我们来看看控制台中执行这个命令并查看结果。 结果默认会显示4列信息: PID: 运行着的命令(CMD)的进程编号 TTY:

树莓派与Arduino串口通信

早过忘川 提交于 2020-05-07 17:51:23
咳,时隔多月又回到了熟悉的博客园。 从现在开始重新去培养写博客的习惯。 主要是用于科研技术方面的,去记录一些我的学习和思考。 会把问题尽量的具体化,新手化 一是记录方便回忆,二是梳理,三也是希望为遇到相关问题的朋友提供多多少少的借鉴和帮助吧 回归正题,如何实现树莓派与Arduino串口通信 首先是接线方式 一、树莓派与arduino通过USB进行通信 1、将树莓派与arduino通过usb线进行连接 2、在树莓派终端输入 ls /dev/tty*查看两者连接端口的名字。查看有没有ttyACM0 这个文件(注只有在两个硬件USB互连的情况下才会有这个。如果两者没有连接是不会有的) 最新的系统一般都会自动生成。看到ttyACM0就说明二者可以通讯了 接下来上测试代码。 3、编写树莓派与arduino通信代码。 arduino代码: void setup() { Serial.begin(9600); // 9600 bps } void loop() { if ( Serial.available()) { if('s' == Serial.read()) Serial.println("Hello Raspberry,I am Arduino."); } } 把上面代码通过python IDE下载到arduino中,然后再再与树莓派usb链接。 树莓派代码: import

Linux 初级教程:初步进入 Linux 世界

前提是你 提交于 2020-05-07 02:18:47
Linux 系统启动过程 Linux 的启动其实和 Windows 的启动过程很类似,不过 Windows 我们是无法看到启动信息的,而 linux 启动时我们会看到许多启动信息,例如某个服务是否启动。 Linux 系统的启动过程大体上可分为五部分:内核的引导;运行 init;系统初始化;建立终端 ;用户登录系统。 内核引导 当计算机打开电源后,首先是 BIOS 开机自检,按照 BIOS 中设置的启动设备(通常是硬盘)来启动。紧接着由启动设备上的 grub 程序开始引导 linux,当引导程序成功完成引导任务后,Linux 从它们手中接管了 CPU 的控制权,然后 CPU 就开始执行 Linux 的核心映象代码,开始了 Linux 启动过程。也就是所谓的内核引导开始了,在内核引导过程中其实是很复杂的,我们就当它是一个黑匣子,反正是 linux 内核做了一些列工作,最后内核调用加载了 init 程序,至此内核引导的工作就完成了。交给了下一个主角 init。 运行 init init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。init 程序首先是需要读取配置文件 /etc/inittab。inittab 是一个不可执行的文本文件,它有若干行指令所组成。具体内容如下:(你可以在你的linux上执行命令 cat /etc

linux 系统目录详解

大城市里の小女人 提交于 2020-04-06 06:01:39
目录 linux 系统启动流程 系统目录概要说明 系统详细介绍 /etc 文件系统 /dev 文件系统 /usr 文件系统 /var 文件系统 /proc 文件系统 在早期的 UNIX 系统中,各个厂家各自定义了自己的 UNIX 系统文件目录,比较混乱。Linux 面世不久后,对文件目录进行了标准化,于1994年对根文件目录做了统一的规范,推出 FHS ( Filesystem Hierarchy Standard ) 的 Linux 文件系统层次结构标准。FHS 标准规定了 Linux 根目录各文件夹的名称及作用,统一了Linux界命名混乱的局面。 FHS 定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。 FHS 定义了两层规范。第一层是, / 下面的各个目录应该要放什么文件数据,例如: /etc 应该要放置设置文件,/bin 与 /sbin 则应该要放置可执行文件等等。第二层则是针对 /usr 及 /var 这两个目录的子目录来定义,例如: /var/log 放置系统登录文件、 /usr/share 放置共享数据等等。 FHS 依据文件系统使用的频繁与否以及是否允许用户随意改动,将目录定义为四种交互作用的形态,如下表所示: 可分享(shareable) 不可分享(unshareable) 静态的(static) /usr 存放软件