unanao's Blog

用心感知世界之美

Go 语言基础

编译环境

1. go modules 目录要在 $GOPATH 之外,因为默认情况下,$GOPATH 里面是禁用 modules 支持的。Go 的 modules 机制在某种程度上,是消灭整个 $GOPATH 的第一步。 2. 通过goproxy.io下载golang.org的包 随着go modules发不了,可以通过设置GOPROXY下载包。 不然在我们的网络环境下,如果没有翻墙,无法下载托管在...

领域驱动设计

领域驱动设计提供了一个框架,人们普遍接受的一些最佳实践。很多应用的主要复杂性并不在技术上,而是在领域本身、用户的互动或业务。 领域驱动设计是一种思维方式,也是一组优先任务,它旨在加速那些必须处理复杂领域的软件项目的开发。 何时应该为了节省时间而放弃某个方面 何时应该坚持不懈直到找到一个干净利落的解决方案 领域驱动的是指是消化吸收大量的知识,最后产生一个反映深层次领域知识并聚焦...

分布式系统简介

分布式系统简介和注意事项

1. 分布式系统 1.1 “单程序 + 单数据库”为什么也是分布式系统 https://mp.weixin.qq.com/s/eCpJkydT87U7UwvzvOdcGA 想象一下,下面的场景是否在“单程序 + 单数据库”项目中出现过? log 记录执行成功,但是数据库的数据没发生变化; 进程内的缓存数据更新了,但是数据库更新失败了。 因为我们所编写的程序运行时所在的进程,...

简化Java微服务开发

Java微服务开发环境搭建和流程优化

微服务虽然使得单个模块的开发变得简单,但是由于依赖多个服务,使得开发和调试比单体应用麻烦很多。怎么保证引入微服务后,打开IDE就可以进行开发和调试,和单体应用开发差不多,是保证和提高微服务开发效率的关键。同时由于服务越来越多,部署运行环境成为一个负担。本文通过介绍开发过程中使用的工具和方法来简化开发和部署,提高开发效率。 1. 方便快速创建/发布docker镜像 为了解决部署环境的问题,...

服务网关

spring cloud和netflix zuul的使用

1 简介 在微服务的分布式框架中,需要确保跨国大个服务调用的关键行为正常运行,如安全,日志记录和用户跟踪等。要实现这些功能,开发人员需要始终如一的强制这些特性,而不需要每个开发团队都构建自己的解决方案。虽然可以使用公共库或框架来解决这些问题,但是这样会造成下面3个影响: 容易遗漏: 开发过程中专注功能交付,可能忘记日志记录和跟踪。但是对于医药或者金融领域,完整的记录系统的操作记录才...

熔断

Hystrix的实现原理

Hystrix 简介 Hystrix具备哪些能力/优点 在通过网络依赖服务出现高延迟或者失败时,为系统提供保护和控制 可以进行快速失败,缩短延迟等待时间和快速恢复:当异常的依赖回复正常后,失败的请求所占用的线程会被快速清理,不需要额外等待 提供失败回退(Fallback)和相对优雅的服务降级机制 提供有效的服务容错监控、报警和运维控制手段 Hystrix 如何解决级联故障/防止服务雪崩...

配置中心

Spring cloud config

1. What is Spring Cloud Config 其官方文档中对自己的定义是: Spring Cloud Config provides server and client-side support for externalized configuration in a distributed system. With the Config Server you ha...

服务注册和发现

Spring cloud eureka

1. Eureka简介 其官方文档中对自己的定义是: Eureka is a REST (Representational State Transfer) based service that is primarily used in the AWS cloud for locating services for the purpose of load balancing and ...

项目管理

软件项目管理的思考

软件开发虽然有很成熟的开发模型,如CMMI,敏捷开发等,但是把整个开发流程协调好一件非常困难的事情。 项目开发过程中的细节非常重,同样是做项目,有的项目游刃有余,有的项目摸爬滚打,当然和项目困难程度有关,还有很大一部分是项目中的流程和细节做的不到位。 人是重要的因素,最近我遇到了伤心事,对着屏幕是写了一天的代码,还是发了一天的呆都是有可能的,工作的效率和一个团队的氛围也有很大的关系。 ...

如何高性能的使用Influxdb

通过influxdb的概念,数据建模,性能,大数据量和硬件进行说明

1 基本概念 1.Measurement:从原理上讲更像SQL中表的概念。这和其他很多时序数据库有些不同,其他时序数据库中Measurement可能与Metric等同,类似于下文讲到的Field,这点需要注意。 2.Tags:维度列 在InfluxDB中,表中Tags组合会被作为记录的主键,因此主键并不唯一,所有时序查询最终都会基于主键查询之后再经过时间戳过滤完成。 内存中有...