Fork me on GitHub

Tech For Fun

kaelzhang's blog

微服务关键技术纵览

Nine Characteristics of a Microservice Architecture

微服务关键技术纵览 本文源自公司内训的《微服务训练营》中的关键技术课件,内容格式沿用PPT展示风格。 服务注册与发现 缘由 服务实例IP分配动态化 服务实例的动态改变 弹性 故障 升级 Note: 在传统的运行在物理机上的应用,服务的网络地址是相对静态的。然而,在现代的基于云计算的微服务应用中,服务实例会被...

微服务九大特性精炼

Nine Characteristics of a Microservice Architecture

微服务九大特性精炼 微服务的九大特性是微服务架构风格的重要设计原则。在Martin Fowler的官方博客上有详细阐述。不过由于该文篇幅比较大,阐述略为细致,对于读者来说不好把握其重点,故通过本文对其进行提炼总结。 特性一:“组件化”与“多服务” 解释 通过服务的方式实现系统的组件化。 原因 服务可独立部署、发布 服务接口更加明显(explicit) 说明 组件:被链接到...

Spring Cloud从0到1

Spring Cloud from 0 to 1

Spring Cloud从0到1 Spring Cloud是一个基于Spring Boot实现的微服务开发工具,它为微服务架构中涉及配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。 Spring Boot SpringBoot让创建独立的,生产环境的基于Spring的应用更加快捷简易。 大部分Spring...

持续部署概述

continuous deployment

定义 持续部署是指当交付的代码通过评审之后,自动部署到生产环境中。 持续部署是持续交付的最高阶段,意味着所有通过了一系列的自动化测试的改动都将自动部署到生产环境。它也可以被称为“Continuous Release”。 持续集成、持续发布及持续部署的关系: 实践方法 必要的前期准备:应用虚拟化(例如:使用docker)、准备部署蓝图、构建部署系统。 常见的部署方法 蓝绿部署: ...

详解圈复杂度

Detailed Cyclomatic Complexity

详解圈复杂度 圈复杂度概念 圈复杂度(Cyclomatic complexity,简写CC)也称为条件复杂度,是一种代码复杂度的衡量标准。由托马斯·J·麦凯布(Thomas J. McCabe, Sr.)于1976年提出,用来表示程序的复杂度,其符号为VG或是M。它可以用来衡量一个模块判定结构的复杂程度,数量上表现为独立现行路径条数,也可理解为覆盖所有的可能情况最少使用的测试用例数。圈...

proto3默认值与可选项

the default & optinal value of proto3

proto3默认值与可选项 背景介绍 目前开发的产品架构采用微服务架构,微服务之间通信的消息格式则使用的proto3标准协议格式。 proto介绍 全称Protocol Buffers(下面简称PB)是Google公司开发的一种数据描述语言,是一种类似XML但更灵活和高效的结构化数据存储格式,可用于结构化数据的序列化,适用于数据存储、RPC数据交换格式。它可用于通讯协议、数据存储等领...

软件架构模式速览

Software Architecture Patterns

软件架构模式速览 解读架构模式 每当人们谈起架构要么会陷入一些纯理念(例如架构是什么?它来自哪里?又要到哪里去?我已陷入了深深地思考中…)或者buzzword(SOA、微服务)等空对空互侃的怪圈,要么会陷入过于细节的实操技巧(如高并发高流量技巧揭秘等)。软件架构模式则很好的起到连接理论与实际的作用,使得架构理念的讨论更佳具体而全面,让架构细节有了依据和载体。本文源自Mark Richards...

gcc-4.9编译安装过程记录

the compile and install of gcc

背景说明 由于所在团队代码使用了c++11的相关特性,而大项目CI服务器(ubuntu server)上默认安装的是gcc-4.8,因此首先需要安装gcc-4.9,然后能够做到按需选择gcc版本来编译不同的工程代码。还需要交代的是:由于信息安全服务器无法直接访问外网,而是使用内部的一个ubuntu mirror服务器来完成apt相关操作。 尝试直接安装4.9 首先想到的是通过指定gcc...

团队C++代码走查小结(设计篇)

the summary of C++ code review(2)

团队C++代码走查小结(设计篇) 本文内容源于团队的每日代码走查活动,对照Clean Code基本原则和项目C++编码规范将项目代码中实际出现的一些问题进行提炼归纳,以便经验传播、避免问题反复出现。 PS:由于信息安全已对示例代码进行去业务处理。 物理设计 冗余的头文件 // #include "haed1andhaed2.h" #include "haed1.h" Haed1 h...

团队C++代码走查小结(CC篇)

the summary of C++ code review(CC)

团队C++代码走查小结(CC篇) 本文内容源于团队的每日代码走查活动,对照Clean Code基本原则和项目C++编码规范将项目代码中实际出现的一些问题进行提炼归纳,以便经验传播、避免问题反复出现。 PS:由于信息安全已对示例代码进行去业务处理。 命名 名副其实 避免误导 做有意义的区分 驼峰命名规范 命名大小写规则 示例: std::string getglobalI...