ljchen's Notes

Quick Notes


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

浅析gRPC

发表于 2018-09-20 | 分类于 cloud-native |
阅读时长 ≈ 4 mins.

gRPC.io官网上的一篇Blog大致讲解了gRPC是如何使用HTTP/2的,觉得讲的比较抽象,理解的不够透彻,于是自己找了一些资料。大致总结一下,个人认为:gRPC之所以高效,除了在协议层使用Protobuffer之外,底层使用HTTP/2也是一个非常重要的原因。下面先上一张图,再来看看HTTP/2的一些特征。

阅读全文 »

Redis知识点整理

发表于 2018-09-11 | 分类于 distributed-system |
阅读时长 ≈ 5 mins.

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,和Memcached类似;它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型);同时,还支持地理位置GEO和Bitmap扩展类型。

阅读全文 »

编译原理

发表于 2018-09-02 | 分类于 programming-language |
阅读时长 ≈ 13 mins.

一般高级语言程序编译的过程:预处理、编译、汇编、链接。

gcc在后台实际上也经历了这几个过程,我们可以通过-v参数查看它的编译细节,如果想看某个具体的编译过程,则可以分别使用-E, -S, -c和 -O,对应的后台工具则分别为cpp,cc1,as,ld。

下面我们将逐步分析这几个过程以及相关的内容,诸如语法检查、代码调试、汇编语言等。

阅读全文 »

Kafka原理总结

发表于 2018-08-25 | 分类于 distributed-system |
阅读时长 ≈ 16 mins.

研究了rocket-mq之后,一直想知道为什么kafka会这么火, 终于有时间学习了一下这块的内容, 简单总结以备以后查阅。

阅读全文 »

Docker核心原理

发表于 2018-08-12 | 分类于 container |
阅读时长 ≈ 10 mins.

每次看docker相关的资料,都是零零碎碎的,没有系统性的去把所有知识融汇起来。最近花时间好好学习了一下,基本算是能够把docker所用的linux相关的知识给串通起来;这里简单记录一下,希望便于后续进一步学习或者对后来人有一定的帮助。

阅读全文 »

微服务网关Kong实践

发表于 2018-08-11 | 分类于 distributed-system |
阅读时长 ≈ 6 mins.

之前做PaaS平台使用过新浪基于OpenResty实现蓝绿部署和灰度发布的方案。这几天倒腾了一下大名鼎鼎的Kong,对其新版本中的概念抽象,以及环境搭建、plugin编程规则等内容大概记录一下。

Kong介绍

  • API网关是所有的客户端和消费端统一的接入点,它对消费者屏蔽了后端的微服务,并处理非业务功能。通常,网关也提供REST/HTTP的访问API,服务端通过API-GW注册和管理服务。
  • Kong是一个可扩展的开放源码的API中间件, 它在任何RESTful API的前面运行,通过插件扩展,它提供了超越核心平台的额外功能和服务。Kong是基于OpenResty(不要问我Openresty是不是基于Nginx),在其基础上做了一系列的抽象概念、提供了相应的Lua脚本编程框架和库;同时,它也提供了集群方案,是一个满足生产级的API网关解决方案。
阅读全文 »

Rocket-MQ总结

发表于 2018-08-04 | 分类于 distributed-system |
阅读时长 ≈ 3 mins.

之前一直在使用rabbitmq,对Rocket MQ研究的比较少;最近由于另外一个项目已经使用了RMQ,为了不至于引入更多的中间件类型,在基础架构中也直接选型RMQ。然后大致找了一些资料,和书籍了解了一下RMQ的原理;趁周末,大概总结一下。

MQ作用

既然都聊到消息队列了,就势必再提一下它在分布式中的作用。对我来讲,比较有深入体会的,大致包含一下三个方面。

阅读全文 »

分布式系统Leader-Election实践

发表于 2018-07-29 | 分类于 distributed-system |
阅读时长 ≈ 4 mins.

最近在实现基于golang的基础代码框架,正好实现了一遍leader选举的代码;研究了各种方式选主的实现,简单记录一下。

两种思路

刷存在感、论资排辈

以前搞网络协议的时候,绝大多数的选主流程都是依靠协议的节点相互之间发送:“请求->应答->确认”等报文来通告朋友圈自己的信息,耍存在感;协议定义了朋友圈儿中论资排辈的规则,比如先看MAC地址、再判断用户配置的优先级等等。

阅读全文 »

Docker Cpu资源隔离

发表于 2018-06-24 | 分类于 container |
阅读时长 ≈ 11 mins.

概述

docker提供对CPU资源的限制,主要基于cgroup的cpuset来实现;到v1.13版本后,主要演化成以下几个参数。

  • –cpus 指定容器所需的cpu核数;其实现方式只是指定的对应cpu核心数相对的资源总量,容器可能会在多个核心上运行,可能涉及到上下文切换的消耗;
  • –cpu-shares 指定多个容器抢占有限的资源时能够分配到cpu资源的权重;需要搭配着其他两个命令一起使用,单纯使用该命令,或在没有资源抢占的情况下使用该命令没有意义;
  • –cpuset-cpus 指定容器绑定到具体哪些cpu核上运行;资源隔离相对较好,但也可能存在多个容器同时被绑定到同一个核上的情况。
    阅读全文 »

Macvlan与ipvlan解析

发表于 2018-06-24 | 分类于 sdn |
阅读时长 ≈ 5 mins.

本文主要就macvlan和ipvlan的工作模式以及差异做简要介绍;同时,为便于形象的理解,还会涉及到一些实际操作命令。

macvlan

这里的macvlan是linux kernel提供的一种network driver类型,它有别于传统交换机上提供的mac based vlan功能。可以在linux命令行执行lsmod | grep macvlan 查看当前内核是否加载了该driver;如果没有查看到,可以通过modprobe macvlan来载入,然后重新查看。

阅读全文 »

1…5678
ljchen

ljchen

73 日志
9 分类
87 标签
RSS
GitHub Email Twitter Facebook
© 2017 — 2021 ljchen | 528k
由 Hexo 强力驱动
|
主题 — NexT.Pisces v6.0.0
网站统计
0%