我们真的需要微服务吗?

什么是微服务? 微服务是很小的,但是又能够独立部署的服务。 微服务的优点 1.不同的服务可以使用不同的语言和技术来实现 2.提供服务可用性,当其中一个服务不能正常工作,可以通过多实例或者服务降级来维持着 3.扩展性好,某些特别需要资源的服务可以专门提供更多的资源来支撑 4.部署简单,如果是单体应用,修改一行代码都需要整个工程重启 5.因为微服务的每个服务都很小,所以修改起来十分轻松,并且重构都是简简单单的事情 微服务的缺点 1.技术门槛提高了,因为你要面对分布式的问题 2.总体部署也变得复杂了,因为你多个服务可能需要不同的环境,你还要为其提供必需的运行环境 3.需要考虑服务间通讯的可靠性和稳定性,网络并不是十分可靠的 4.

influxdb学习笔记

对于一些时间序列的指标数据,并且数据量很大的时候,mysql就显得不太适合了。所以采用专业的时序数据库就比较合适了。而时序数据库中比较出名就是influxdb了。 在centos7安装influxdb # 使用docker运行influxdb(国外镜像比较慢,所以用同步到腾讯云的镜像) docker run -d -p 8083:8083 -p 8086:8086 ccr.ccs.tencentyun.com/yubang/influxdb:1.5.2 安装了,可以访问 127.0.0.1:

centos7使用requests-html

requests-html是一个类似于requests的python http client,但是会下载一个无界面chromium,从而可以执行js。虽然它会自动下载chromium,但是相关的依赖却不会下载。所以直接运行便会报错。 Traceback (most recent call last): File "1.py", line 4, in <module> r.html.render() File "/usr/local/lib/python3.

mysql入门笔记

数据类型 数值类型 tinyint:整数,有符号-128到127,无符号0到255 smallint:整数,有符号-32768到32767,无符号0到65535 mediumint:整数,有符号-8388608到8388607,无符号0到1677215 int:整数,有符号-2147483648到2147483647,无符号0到2147483647 bigint:整数,有符号-9233372036854775808到9223372036854775807,无符号0到18446744073709551615 float:浮点数,float(M, D)表示,M代表总长度,D代表小数点后面长度 double:浮点数,double(

微信小程序播放缓存的音频文件

很多时候我们都想把数据预先缓存到本地,节省带宽。但是最近在处理微信小程序播放缓存到本地的音频文件的时候,遇到一些小问题,然后对于安卓和IOS需要采用不同的播放策略。 首先,如果哪怕用audio标签来播放在线的音频文件,假如服务端没有实现断点续传,IOS是无法播放的,这个需要注意。 对于缓存在小程序的音频(wx.saveFile(OBJECT)保存的音频),IOS只能通过播放背景音乐的接口播放,其它播放方法都没有成功实践,而对于安卓,内部 audio 上下文 innerAudioContext 对象即可播放。给出代码: var res = wx.getSystemInfoSync() if (res.platform == 'ios') { this.

微信小程序录音与播放录音

小程序中提供了两种录音的API 旧版录音功能 首先启动录音,然后停止录音即可拉到音频的临时地址 启动录音: var that = this; wx.startRecord({ success: function (res) { / 调用了停止录音接口就会触发这个函数,res.tempFilePath为录音文件临时路径 var tempFilePath = res.tempFilePath that.setData({ src: tempFilePath }) }, fail: function (res) { /录音失败的处理函数 } }) 停止录音: wx.stopRecord() 播放录音: wx.

企业微信(服务商模式)oauth

概念 由于这种模式多了很多稀奇古怪的概念,首先我们来理一理这个概念。 三种token 企业接口的token 应用授权的token 服务商的token 参考文档:/work.weixin.qq.com/api/doc#11791 各种ID CorpID:整个企业微信的ID SuiteID:服务商新建的每一个应用特有的ID Secret:服务商新建的每一个应用特有的Secret 构造登录URL 做过oauth的同学都知道,oauth登录的第一步是引导用户到第三方服务器,然后用户确认授权登录(或者静默授权)之后,跳转回自己的服务器,同时带上code这个参数值。 企业微信服务商构建url的文档地址在:

vscode 远程调试python

实验环境 远程服务器:京东云,1核2G,centos7.3 64bit 本地环境配置 安装vscode,实验用的版本是1.10.2 vscode配置python插件,实验用的python插件版本是0.7.0 vscode配置python远程调试环境 在.vscode文件夹新建一个launch.json文件,然后填写下面的代码 { "version": "0.2.0", "configurations": [ { "

centos7 安装Kubernetes 1.7.1

配置环境说明 主服务器 腾讯云,广州二区,1核1G,centos7.3 64bit 节点服务器 腾讯云,广州二区,1核1G,centos7.3 64bit 主服务器安装配置 关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service 关闭selinux setenforce 0 # 修改/etc/selinux/config文件的SELINUX=XXX

kubernetes

k8s拉取私有仓库镜像

首先k8s要主动拉取私有仓库则需要配置secret 只需要一条命令 kubectl create secret docker-registry {secret名字} --docker-server={仓库地址} --docker-username={你的账号} --docker-password={你的密码} --docker-email {你的邮箱} -n {命名空间} 当然在创建pod的yaml文件也需要指定secret,直接上例子 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: my-app namespace: uread spec: replicas: 2 template:

kubernetes

安装kubernetes-dashboard管理k8s集群

首先我们知道k8s功能十分强大,但是我们要学习它很多命令其实还是不够友好,所以需要一个web ui控制台来管理。 安装仅需要两个yaml文件 安装前提是已经安装好k8s 编写文件a.yaml(10.104.241.122改成自己的k8s的ip) apiVersion: extensions/v1beta1 kind: Deployment metadata: # Keep the name in sync with image version and # gce/coreos/kube-manifests/addons/dashboard counterparts

kubernetes

在centos7上安装配置k8s集群

配置背景介绍 为什么要用kubernetes这么复杂的docker集群管理工具呢?一开始接触了docker内置的swarm,这个工具非常简单快捷的完成docker集群功能。但是在使用docker1.13内置的swarm做集群的时候遇到vip负载均衡没有正确映射端口到外网,或者出现地址被占用的情况,这对高可用性的需求是不利的,然而又没找到一个解决方案,只能转投k8s。 实验环境 腾讯云 centos7.3 64位 安装 yum-config-manager --add-repo /docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repo yum

docker使用小技巧

docker是持续构建应用交付的一大利器也,但是要使工具发挥最大的功效还需要知道一些小技巧。 为了更好的使用docker,建议升级到1.13。注意,该建议仅为个人观点,并且是写于2017年9月3日。(下面命令皆基于1.13) # 升级指令(centos7测试过) yum-config-manager --add-repo /docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repo yum makecache fast yum -y

生产环境docker历险记

首先感谢产品狗jinkey(/jinkey.ai/)把他的服务器托付给我部署应用,下面讲一下最近在生产环境使用docker惊心动魄的经历。 docker是双面刃 你爱的人往往伤你最深,docker的环境隔离,快速交付,持续构建支持等优势往往让人爱不惜手,但是越依赖于docker的时候,你却会发现越来越无助,因为高级的资料真的不好找。 环境隔离分析 首先我们来看一下docker环境隔离的实现原理,其实本质是利用linux系统的进程命名空间隔离进程。本身linux系统只有一个命名空间,每个命名空间下面可以有很多进程树。但是当新建了一个命名空间之后,该命名空间下的进程不能知道其它命名空间的进程,所以达到了隔离进程的目的。但是注意命名空间同级进程可以知道命名空间下的进程,这也是我们在系统输入ps aux可以看到docker容器跑起来的进程。 参考:/blog.csdn.net/tongtest/article/details/

chrome插件开发实践

首先我们来看一下chrome能做什么事情,其实主要的功能是往页面注入一段js代码,修改浏览器外观和获取浏览器内部信息。 chrome插件生命周期 浏览器打开时执行一次的js代码 每打开一个页面执行的js代码 点击浏览器上插件按钮,打开一个页面,执行的js代码 开发chrome插件的准备工作 一个文本编辑器即可 一个hello world工程 新建一个文本文件:manifest.json 内容如下: { "manifest_version": 2, "name": "优读Uread网页版插件", "version": "1.

Uread 自动化运维平台实践

首先技术并没有好坏之分,只能说一种技术在特定场景会优于另一种技术。 首先uread优读(/aiuread.com/)作为一个还处于起步阶段的团队,那么没办法造出像大企业他们那种自动化运维平台,真实情况是连用OpenStack来管理应用都是一种高难度活。 第一阶段,单体应用,纯人力部署 团队一开始,反正后端就一个系统,然后又是用git作为团队内部的协作工具,部署理所当然是直接每次发布新版本,直接执行git pull,然后执行一个封装好kill进程,重启进程的shell脚本,接着更新版本流程完成。 第二阶段,服务拆分,交互遇到问题 随着功能越来越多,后端前端的同学也越来越多,以前一个工程囊括整个项目的做法的弊端开始显露出来。首先,由于工程膨胀,要一位新来的同学看懂整个工程会变得非常困难,并且提交代码的时候冲突会非常严重。现在微服务不是很流行么,所以团队也考虑是不是拆开成微服务呢。

IOT

微信IOT与airkiss3的wifi硬件操作实践

最近接触微信硬件平台开发,然后微信扫描连接wifi设备的开发流程只是很简单的,无奈文档实在不多,下面我写一下详细的成功的开发流程。 硬件准备 1台安卓机,1台装有微信的手机(安卓或者ios) 模拟设备制作 假如我们手头上没有wifi硬件设备,我们可以拿一台安卓机来模拟wifi硬件设备,当然要下载一个软件,链接是: /iot.weixin.qq.com/wiki/doc/sdk/Airkiss3.0_SDK_for_android_20160113_165358.zip 当然这个安装包里面的apk不要直接安装,因为没法直接用来调试,下面会说如何修改源码编译出可用的app。 申请一个测试号

使用moquette搭建mqtt服务

moquette安装 第一步访问项目主页:/github.com/andsel/moquette 第二步,在主页找到下载地址:/bintray.com/artifact/download/andsel/generic/distribution-0.10-bundle-tar.tar.gz 第三步,解压运行(当然你需要安装好java环境) tar zxf distribution-0.10-bundle-tar.tar.gz cd bin ./moquette.sh

java

从0开始编写一个spring boot 应用

为什么要使用spring boot? 入门简单,无需编写大量的xml文件来配置应用 内置tomcat,可以生成直接运行的独立jar文件 简化了spring框架一些繁琐的开发方式,提供很多与第三方库的结合 使用eclipse新建一个spring boot工程 1.先在eclipse官网下载一个eclipse EE 2.new -> Maven Project 3.填写项目信息 ** 安装spring boot依赖 ** 在pom.xml文件添加一点点东西(保存的时候eclipse会自动下载依赖),整个文件如下: <project xmlns="/maven.

java

maven web 应用配置

太久没有使用java有点生疏了,所以特意使用eclipse,通过maven 配置一下java web工程(本文仅用做个人查阅之用)。 安装jdk和eclipse jdk的下载可以在360软件管家等地方下载,eclipse可以在官网下载(java ee版本) eclipse自动补全 Windows -> Preferences -> Java -> Editor -> Content Asist -> Auto activation triggers for Java