@bergus
2017-01-05T13:12:19.000000Z
字数 25404
阅读 2981
资源列表
docker run --rm -it -p 6752:6752 todolist python /apps/todos/main.py
docker run -dit --name=interlock -v `pwd`/config.toml:/etc/interlock/config.toml -v `pwd`/nginx:/etc/nginx ehazlett/interlock:master run -c /etc/interlock/config.toml
docker run -dit --name=interlock -v `pwd`/config.toml:/etc/interlock/config.toml -v `pwd`/nginx.conf.template:/etc/interlock/nginx.conf.template -v /var/run/docker.sock:/var/run/docker.sock ehazlett/interlock:master run -c /etc/interlock/config.toml
docker run -dit --name=nginx -v `pwd`/nginx:/etc/nginx -p 80:80 --label interlock.ext.name=nginx --link=interlock:interlock nginx:latest nginx -g "daemon off;" -c /etc/nginx/nginx.conf
docker run -dit --name=app -l "interlock.hostname=test" -l "interlock.domain=local" ehazlett/docker-demo:latest
docker service create --name=gogs -p 10022:22 -p 10080:3000 gogs
docker service create --name=microTodos -p 6752:6752 -l service=micro_todos 192.168.200.23:5002/python/micro_todos python /apps/todos/main.py
docker service create --name=microTodos -p 6752:6752 -l service=micro_todos 192.168.200.23:5002/python/micro_todos python /apps/todos/main.py
docker run --rm --name=micro_todos -l service=micro_todos -p 6752:6752 192.168.200.23:5002/python/micro_todos python /apps/todos/main.py
docker run --rm --name=micro_todos -p 6752:6752 192.168.200.23:5002/python/micro_todos python /apps/todos/main.py
curl -X PUT -d '{"Name":"microTodos","Address":"192.168.100.95","Port":6752}' -i http://192.168.200.23:8500/v1/agent/service/register
curl -X PUT -d '{"Datacenter":"dc1","ServiceID":"microTodos","Node": "node1"}' -i http://192.168.200.23:8500/v1/catalog/deregister
curl http://192.168.200.23:8500/v1/catalog/service/micro_todos
docker run -d \
--name=registrator \
--net=host \
--volume=/var/run/docker.sock:/tmp/docker.sock \
192.168.200.23:5002/gliderlabs/registrator \
consul://192.168.200.23:8500
docker run -p 80:3002 --name=between -v `pwd`/gobetween.toml:/etc/gobetween/conf/gobetween.toml:rw 192.168.200.23:5002/python/gobetween
[servers.sample3]
bind = "localhost:3002"
protocol = "tcp"
balance = "weight"
[servers.sample3.discovery]
interval = "10s"
timeout = "2s"
kind = "docker"
docker_endpoint = "http://192.168.100.95:2375" # Docker / Swarm API
docker_container_label = "service=micro_todos" # label to filter containers
docker_container_private_port = 6752 # gobetween will take public container port for this private port
[servers.sample3.healthcheck]
fails = 1
passes = 1
interval = "2s"
timeout = "1s"
kind = "ping"
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8088:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest
DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store consul://localhost:8500 --cluster-advertise eth0:2375"
网络可以使用flannel,或者openvswitch
universal system visibility tool with native support for containers
CoreOS Fest 系列之第二篇: Systemd、Go、Calico、Sysdig
监控微服务的五原则
Spring-cloud项目实践
Spring Cloud集成相关优质项目推荐
spring cloud系列 example
Spring Cloud提供一套完整的微服务解决方案
spring框架及spring cloud框架主要组件
spring cloud cnblogs blog
Spring Cloud netflix概览和架构设计
市场上有各种风格的投资者,有坚持价值投资的,有偏好量化投资的,有研究K线做技术分析的,有挖掘题材故事的,但是绝大部分投资者都非常固执地坚持己见,不太容易听取不同意见。其实,在金融领域最大的一个误区就是很多人觉得自己找到了交易的圣杯。但是这个圣杯显然是不可能存在的。对于很多投资者而言,为什么你的固执总是错的,希望扑克投资家今天带来的这篇文章能给到你不一样的启示。
https://github.com/hypriot/flash
https://www.vaultproject.io/
http://www.gorillatoolkit.org/pkg/rpc
https://github.com/gorilla/
https://github.com/kataras/iris
https://github.com/getqujing/qtunnel
https://github.com/wothing
https://github.com/abourget/gevent-socketio
https://github.com/google/protobuf
https://github.com/kataras/iris
http://www.ustack.com/wp-content/uploads/2015/06/architecture.png
https://www.kubernetes.org.cn/img/2016/11/20161115194758.jpg
/usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 2375 -container-ip 172.17.0.6 -container-port 2375
微服务架构下的数据一致性保证(一) -- 微服务架构下的数据一致性保证(二) -- 微服务架构下的数据一致性保证(三):补偿模式 -- 微服务实践(五):微服务的事件驱动数据管理 -- 从单体架构迁移到微服务,8个关键的思考、实践和经验 -- 微服务架构之事件驱动架构 -- 使用RabbitMQ的事件驱动微服务 -- 基于Nginx搭建一个安全的、快速的微服务架构
ponos -- An opinionated queue based worker server for node.
runc -- is a CLI tool for spawning and running containers according to the OCI specification.
Docker背后的容器管理——Libcontainer深度解析
浅析 Linux 初始化 init 系统,第 3 部分: Systemd
容器周边开源工具新秀:Sysdig和Calico
Linux system exploration and troubleshooting tool with first class support for containers
hystrix-py -- Latency and fault tolerance for distributed systems
API Notebook -- Create interactive API examples. Runnable JavaScript snippets. Embeddable anywhere.
# 盒子模式
我的客户就是你的客户,我的产品就是你的产品。
你的产品就是我的产品,你的客户就是我的客户。
你能成就多少人,就会有多少人成就你。
# 整合资源
天下万物不为我所有,但为我所用。
关系到位了,一切都不是问题。
让每一个人都成为公司的股东。押金,入股。
# 用师模式
梦想还是要有的,万一实现了呢。
付费是最好的人脉圈。
领导都是开会的高手。
让优秀的人为你工作。
用钱表明自己的诚意。
把钱送给优秀的人是一种投资。
付费就是对老师最大的认可。
早点行动,有梦想就要行动。
每天反思自己。
脑袋决定口袋。
给优秀的人更多的钱,要超出对方的预期。
格局,眼光,魄力,相信。
相信也是一种能力。
用师者王。
用友者霸。
用徒者亡。
# 组合模式
1. 成立公司并邀请市领导去剪彩
2. 傍大款的九种
3. 让大户捧场
4. 采购厂商当场签约
大腿模式,只有自己成为大腿,才会有人抱你大腿。(8大秘诀)
5. 锦囊模式。现在我手里面有5亿的采购合同,
商业模式设计好了,就会有人去做的。
合作的就是去找认可和相信你的人。那些质疑你的人不是你要合作的人。
优惠的政策都是给有贡献的企业制订的。
这个世界上没有无缘无故的爱,也没有无缘无故的恨。
相信比怀疑多一次机会。
商业模式微信号:809008505
docker run --name mypostgres -p 5432:5432 -e POSTGRES_PASSWORD=123456 -d postgres
docker run -it --rm --link mypostgres:postgres postgres psql -h postgres -U postgres
https://runc.io/
ngx_http_upstream_conf_module
ngx_http_upstream_module
哪些 Python 库让你相见恨晚?
A lightweight LLVM python binding for writing JIT compilers
APIJSON, 让接口见鬼去吧!
sqlalchemy
Orator -- ORM a beautiful ActiveRecord implementation
ponyorm -- Pony Object Relational Mapper -- github
uikit
OKCoin专业的虚拟货币交易平台
Kubernetes中文社区
naive go bindings to the CPython C-API
gopy generates a CPython extension module from a go package.
py is a high-level API wrapping the low-level CPython C-API, for go
JSON Web Token (JWT) 简介
A mirror of hg.python.org
理解OAuth 2.0
1. 淘宝开放平台文档
2. 百度帮助文档
Scientific libraries in Java
比拼Mesos/Marathon?基于Docker 1.12 Swarm集群管理深度实践
RESTful API 设计最佳实践
Given a web API, Generate client libraries in node, php, python, ruby
用 consul + consul-template + registrator + nginx 打造真正可动态扩展的服务架构
Modern & minimalistic load balancer for the Сloud era
Hugo中文文档
Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS
Sphinx is a tool that makes it easy to create intelligent and beautiful documentation
jpype -- python programs full access to java class libraries--github
JMeter -- Apache JMeter may be used to test performance both on static and dynamic resources, Web dynamic applications.
Cleo allows you to create beautiful and testable command-line interfaces.
Cachy -- python cache library
一个基于python实现的,通过URL的GET,POST,PUT,DELETE方法操作数据库的系统
Instant REST API for your SQL database
SQL generator with Java and HTTP APIs
Erlang VM上的动态函数式语言 -- github
开源吧
gosu --****-- A simple JVM language like groovy
Spark -- A micro framework for creating web applications in Java 8 with minimal effort -- github
Pyramid -- The Start Small, Finish Big Stay Finished Framework -- github -- 中文非官方文档
Pylons Project -- We build Web Technologies for the Python community
cerberus -- Lightweight, extensible data validation library for Python -- docs
Undertow -- flexible performant web serve
Invoking Enterprise Web Services using Jython
SlickGrid -- A lightning fast JavaScript grid/spreadsheet
RQ (Redis Queue) is a simple Python library for queueing jobs and processing them in the background with workers -- rq-dashboard
helios -- Docker container orchestration(编排) platform
docker-gc -- Docker garbage collection of containers and images
disconf -- 分布式配置管理平台
Gogs (Go Git Service) -- is a painless self-hosted Git service Gitea -- gogs fork -- Drone is a Continuous Delivery platform built on Docker, written in Go
Scribe is a server for aggregating log data streamed in real time from a large number of servers.
Ansible中文权威指南 -- github -- ansible-examples
semaphore -- Open Source Alternative to Ansible Tower
arping -- Arping is a util to find out it a specific IP address on the LAN is 'taken' and what MAC address owns it
CAT -- 基于Java开发的实时应用监控平台,包括实时应用监控,业务监控 -- Central Application Tracking
pfrock -- 可以mock微服务架构(SOA)中各式各样的服务接口请求 -- mock-server -- imple mock server for REST API -- json-server -- Get a full fake REST API with zero coding in less than 30 seconds
anyproxy -- A fully configurable http/https proxy in NodeJS -- 自制根证书 -- github
flex-combo -- The Flex-combo is a javascript and css file combo server. It support various kinds of combo format by modify configuration(eg. yahoo combo). Default, it's a taobao format combo.
百度网盘搜索--另一个
Tengine -- 是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。 -- github
kong -- The API Gateway & Microservice Management Layer, built on NGINX -- 基于 OpenResty 研发 -- web -- blog -- kongdash -- python-kong
openresty -- 一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关 -- github -- OpenResty中使用反向代理 -- 性能测试 -- openstar -- lua waf,nginx+lua,openresty,luajit,waf+,cdn,nginx -- web
python实现nginx图形界面管理
Nginx+uwsgi快速部署Python应用
Conductor is a microservices orchestration engine -- 微服务编排器 Netflix Conductor:微服务编排器
Amazon States Language
pandoc -- a universal document converter
一张图告诉你什么是成本!
商业模式,顶层设计
cloudxns -- 迄今为止最好用的智能DNS
VeryNginx -- A very powerful and friendly nginx base on lua-nginx-module( openresty ) which provide WAF, Control Panel, and Dashboards. -- Nginx 运行状态分析 -- 开始使用 VeryNginx
Nginx 配置之完整篇
Let's Encrypt,免费好用的 HTTPS 证书
两阶段提交协议,分布式事务控制(2PC)
EDA事件驱动架构
教程入门:建立一个完全自动化的交易系统
zipline -- Zipline, a Pythonic Algorithmic Trading Library -- 交易算法库
Linux科学计算平台:使用Sage和Python计算数字 -- web -- docs
python 版海风开源策略平台 -- pyalgotrade -- A股版的pyalgotrade,在原版的基础上,增加了A股的历史行情和实时行情,可以用来做回测和实盘模拟。这个项目会定期更新,正在测试CTP接口和交易监控等功能。希望借助开源的力量,能打破机构投资者在工具上的优势,让中小投资者也能分享程序化的红利。 -- tushare -- 免费、开源的python财经数据接口包,主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上 -- tushare-github -- pyalgotrade -- 我自己也在基于python开发自用的量化平台 -- pyalgotrade-github -- pyalgotrade-视频 -- 中国的 Python 量化交易工具链 -- QuantDigger是一个基于python的量化回测框架
jikexueyuan -- 极客学院
harpjs -- The static web server with built-in preprocessing. -- Harp serves Jade, Markdown, EJS, CoffeeScript, Sass, LESS and Stylus as HTML, CSS & JavaScript—no configuration necessary. -- github
FileAPI -- A set of javascript tools for working with files.
headroom.js -- Give your pages some headroom. Hide your header until you need it -- web
nightwatchjs -- Write End-to-End tests in Node.js quickly and effortlessly that run against a Selenium/WebDriver server. -- github
kreate -- Kreate is a tiny helper method for jQuery that can quickly generate DOM elements as a standard jQuery object. You can "Kreate" a single element (such as a
jython docs
pyenv -- Simple Python version management
bats -- Bash Automated Testing System
pipetools -- 管道式函数编程方式 for python
dropwizard -- Metrics is a Java library which gives you unparalleled insight into what your code does in production -- github
github api
crane -- control plane based on docker built-in swarmkit -- docker web
traefik -- a modern reverse proxy -- github
jsonapi -- -- github
kubernetes-py -- github
ScyllaDB -- world´s fastest NoSQL column store database。塞拉是世界级性能领先的NoSQL列存储数据库,完全兼容Apache Cassandra。 -- github -- docs -- cassandra -- Manage massive amounts of data, fast, without losing sleep
PySocks -- A semi-actively maintained SocksiPy fork. Contains many improvements to the original.
nsinit -- 是libcontainer中自带的一个基于libcontainer的工具程序,使用这个工具可以创建容器、进入到一个已有的容器中等等
Polymer -- Build modern apps using web components
gohop -- A VPN implemention in golang, with crypto and obfuscation in nature -- golang实现的VPN系统
vpn-ws -- A VPN system over websockets
ssloop -- is a super python event loop
shadowsocks
https://github.com/micha/jsawk
https://github.com/micha/resty
Little command line REST client that you can use in pipelines (bash or zsh).
https://github.com/micha/json-table
https://github.com/hoplon/hoplon
https://leiningen.org/
https://github.com/go-resty/resty
https://github.com/bungle/lua-resty-template
https://github.com/bungle/awesome-resty
https://github.com/dualface/gbc-core
GameBox Cloud Core - The Game Server Framework based on Lua and OpenResty.
http://luajit.org/
https://github.com/bungle
https://github.com/adobe-apiplatform/apigateway#quick-start
https://github.com/adobe-apiplatform
https://github.com/adobe-apiplatform/umapi-client.py
Python client for the User Management API (UMAPI) from Adobe
二级域名配置步骤
京东三级列表页持续架构优化—Golang+Lua(OpenResty)最佳实践
京东三级列表页持续架构优化—前端优化实践
https://github.com/Mashape
http://tengine.taobao.org/download/programmer-201209-Tengine.pdf
http://tengine.taobao.org/download/taobao_nginx_2012_06.pdf
http://tengine.taobao.org/download/nginx@taobao.pdf
https://github.com/alibaba/weex
python自动化运维:技术与最佳实践
刘天斯互联网运维技术架构
RPyC -- A transparent and symmetric RPC library for python -- docs
http://tomerfiliba.com/projects
low-level python hacker and author of RPyC, Construct and Plumbum. writes about python, algorithms, software architecture and whatever else comes to mind.
Plumbum -- Shell Combinators
infoQ中文站 -- Geekbang
minima -- noSQL + noHTML + noJS
Microservices -- a definition of this new architectural term
python-consul
haproxy 1.6 for lua 笔记 -- haproxy-docs -- How Lua runs in HAProxy -- haproxygofsm -- 简单、小巧而又特色的有限状态机 API -- Haproxy安装、tcp/ip & http的负载均衡 -- haproxy-lua-api -- Lua runs in HAProxy -- lua-haproxy -- Lua client and embedded HTTP API for HAProxy
haproxyctl -- HAProxy control tool
lvs、haproxy、nginx 负载均衡的比较分析
LVS配置
fabio -- ebay 团队用 golang 开发的一个快速、简单零配置能够让 consul 部署的应用快速支持 http(s) 的负载均衡路由器
快速上手部署和使用 cSphere 希云
通过以下命令,只需一分钟,就能把 cSphere 安装起来:
curl -SsL -o /tmp/csphere-install.sh https://csphere.cn/static/csphere-install-v2.sh
sudo env ROLE=controller CSPHERE_VERSION=1.0.1 /bin/sh /tmp/csphere-install.sh
```https://github.com/redspread/spread
https://github.com/kubernetes-incubator/kargo
Deploy a production ready kubernetes cluster
https://github.com/projectcalico/calicoctl
<div class="md-section-divider"></div>
# https://trello.com/b/aSuCIZQo/docker-and-paas-resources
<div class="md-section-divider"></div>
# https://github.com/dokku/dokku
<div class="md-section-divider"></div>
# https://github.com/jpetazzo/dockvpn
https://trello.com/
Trello完全免费,灵活性高,可视化,和任何人一起管理任何事情。
管理项目不再需要冗长的邮件线程、老掉牙的工作表、 不怎么方便的便利贴以及繁杂的软件。Trello 让你一眼 即可掌控项目中的一切。
https://github.com/rancher/ui
https://github.com/dokku/dokku
https://github.com/deis/deis
https://github.com/redspread/spread
https://github.com/kubernetes-incubator/kargo
Deploy a production ready kubernetes cluster
https://github.com/projectcalico/calicoctl
https://github.com/redspread/spread -- Docker to Kubernetes in one command https://redspread.com
spread is a command line tool that makes it easy to version Kubernetes clusters, deploy to Kubernetes clusters in one command, and set up a local Kubernetes cluster
[Kubernetes、Mesos和Swarm:Rancher编排引擎的比较][222]
[Blue-green deployment is a way to safely deploy applications that are serving live traffic by creating two versions of an application (BLUE and GREEN). To deploy a new version of the application, you will drain all traffic, requests, and pending operations from the current version of the application, switch to the new version, and then turn off the old version. Blue-green deployment eliminates application downtime and allows you to quickly roll back to the BLUE version of the application if necessary.][223]
[etcd -- 从应用场景到实现原理的全方位解读][224]
[consul -- 服务发现系统consul-HTTP API][225]
[opsSAM -- 开源运维管理平台][226]
[ssdb -- 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.][227] -- [github][228] -- [phpssdbadmin][229] -- [Twemproxy代理SSDB实现数据分布式存储][230]
[gofsm -- 简单、小巧而又特色的有限状态机][231]
[CocoaUI -- 一个强大的 iOS UI 框架][232]
[redis-storage -- 把leveldb嵌入到redis.实现真正的数据持久存储][233]
[icomet -- A C1000K comet/push server built with C++, for web and mobile app][234]
[Docker在B站的实施之路][235]
[influxdata -- Scalable datastore for metrics, events, and real-time analytics][236] -- [ InfluxDB + Grafana 快速搭建自己的 NewRelic,分析应用运行情况][237] -- [influxdb][238]
[macvlan -- Pipework配置Docker容器macvlan网络][239] -- [Docker网络详解及pipework源码解读与实践][240]
[瓦力上线部署 -- web代码部署工具][241] -- [github][242]
[Walden -- 最适合东半球同学使用的文档框架][243] -- [web][244]
[从同步和异步的角度讲微服务][245]
[openwhisk -- a serverless, open source cloud platform that executes functions in response to events at any scale. -- 分布式的、基于事件的编程服务][246] -- [github][247] -- [docs][248]
[JXADF -- OSGi插件化快速开发平台JXADF,基础平台全部开源,免费][249] -- [docs][250]
[zbus -- ZBUS=MQ+RPC, an extremely light-weighted(~300K) Service Bus focus on Message Queue, Remote Procedure Call, HTTP MicroService, capable of tackling DMZ network constrains, with multiple languages(Java/C#/C/Python/Javascript) support.][251] -- [projects][252]
[kivy -- Open source Python library for rapid development of applications that make use of innovative user interfaces, such as multi-touch apps. -- Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS][253] -- [docs][254] -- [github][255]
[nsq -- NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。它具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。][256] -- [github -- 无中心设计、节点自动注册和发现的开源消息系统][257] -- [nsq小试牛刀][258] -- [实时消息平台NSQ的特性][259] -- [常见开源消息系统][260]
[twemproxy -- A fast, light-weight proxy for memcached and redis -- 减少Memcached或Redis服务器所打开的连接数][261] --
[Emscripten -- Using Emscripten is, at a base level, fairly simple. This tutorial takes you through the steps needed to compile your first Emscripten examples from the command line. It also shows how to work with files and set the main compiler optimization flags.][262] -- [github][263]
[lunatic-python -- a two-way bridge between Python and Lua, allowing these languages to intercommunicate][264] -- [github][265] -- [web][266]
[lupa -- Lua in Python][267] -- [github][268]
[winston -- a multi-transport async logging library for node.js][269]
[pyparallel -- An experimental, proof-of-concept fork of Python 3 designed to optimally exploit multiple CPU cores, fast SSDs, NUMA architectures and 10Gb+ Ethernet networks.][270]
[github -- uwsgi][271] -- [docs][272]
[uwsgitop -- top-like command that uses the uWSGI Stats Server to monitor your uwsgi application][273] -- [uWSGI配置][274]
[Git如何Check Out出指定文件或者文件夹][275]
[python windows 安装包][276]
[aiohttp -- HTTP client/server for asyncio][277] -- [github][278]
[varnish -- Varnish HTTP Cache -- 是一个高性能的代理缓存服务器][279] -- [blog][280] -- [github][281] -- [docs][282] -- *前端就放一个varnish就够了*
[Spark -- hive -- hadoop 视频书籍学习][283]
[NTP(NetworkTimeProto) -- Linux之NTP时间服务器配置部署][284]
[CQRS架构 -- 命令查询的责任分离 -- 使改变模型的状态的命令和模型状态的查询实现分离][285]
[backbonejs -- JavaScript library that provides a whole mess of useful functional programming helpers without extending any built-in objects][286] -- [backbone -- Give your JS App some Backbone with Models, Views, Collections, and Events ][287]
[cython -- optimising static compiler for both the Python programming ][288] -- [docs][289] -- [github][290]
[unirest -- Unirest for Python ,lightweight HTTP libraries available in multiple languages][291] -- [github][292]
[patroni -- A template for PostgreSQL High Availability with ZooKeeper, etcd, or Consul][293] -- [docs][294]
[美团博客][295]
[无锁数据结构(机制篇):内存管理规则][296]
[statsmodels -- 统计建模和计量经济学][297] -- [github][298] -- [blog][299]
[slua -- Fastest lua binding via static code generating for Unity3D and mono.][300]
[让我们再聊聊浏览器资源加载优化][301]
[高性能响应式Web开发实战][302]
[A collection of thin facade APIs wrapped around HTML5 JavaScript features.][303]
[SeaJS 组件库][304] -- [使用文档][305] -- [Seajs 文档][306] -- [spmjs -- nodejs管理工具][307]
[blog1][308]
[一个前端导航站 http://123.jser.us][309]
https://github.com/openwhisk/openwhisk/blob/master/docs/reference.md#rest-api
[momentjs -- Parse, validate, manipulate, and display dates in JavaScript.][310]
[skynet -- skynet是云风编写的服务端底层管理框架,底层由C编写,配套lua作为脚本使用,可换python等其他脚本语言。skynet主要工作是管理注册服务,并开启多线程协调服务之间的调用和通讯。][311] -- [github][312] -- [code][313] -- [blog][314]
[mptun -- It's a peer to peer VPN tunnel over UDP. You can specify multiple local ip if you have many gateway , and also can specify multiple remote ip . mptun can use all the possible paths for tunneling.][315]
[领域驱动设计(DDD:Domain-Driven Design)][316]
[CQRS实践(1): 什么是CQRS][317]--[CQRS实践(2): Command的实现][318]--[CQRS实践(3): Command执行结果的返回][319]--[CQRS实践(4): 领域事件][320]
[领域驱动设计系列文章汇总][321]
[The Computer Language
Benchmarks Game][322]
CQRS:
1. 所有的业务逻辑都只在Domain Model中处理,Command中将不会带有业务逻辑
2. Repository模式:Repository是一个独立的层,介于领域层与数据映射层(数据访问层)之间。它的存在让领域层感觉不到数据访问层的存在,它提供一个类似集合的接口提供给领域层进行领域对象的访问。Repository是仓库管理员,领域层需要什么东西只需告诉仓库管理员,由仓库管理员把东西拿给它,并不需要知道东西实际放在哪。Repository模式主要是封装数据查询和存储逻辑;Repository模式实际用途:更换、升级ORM引擎,不影响业务逻辑;Repository模式能提高测试效率,单元测试时,用Mock对象代替实际的数据库存取,可以成倍地提高测试用例运行速度。应用Repository模式所带来的好处,远高于实现这个模式所增加的代码。只要项目分层,都应当使用这个模式。[blog][323]
3. [架构模式数据源模式之:表数据入口(Table Data Gateway)、行数据入口(Row Data Gateway)、活动记录(Active Record)][324]
4. [分布式事务:不过是在一致性、吞吐量和复杂度之间,做一个选择][325]
5. [消息列队组件的一些特性比较][326] -- [RabbitMQ与Redis队列对比][327] -- [RabbitMQ的几种典型使用场景][328] -- [RabbitMQ 消息确认][329] -- [RabbitMQ工作队列实现高性能任务的负载分发][330] -- [NSQ:分布式的实时消息平台][331]
6. [Winston -- 事件驱动的诊断和补救平台][332]
[awesome-mesos][333]
[chronos -- Fault tolerant job scheduler for Mesos which handles dependencies and ISO8601 based schedules][334]
[使用Mesos管理Docker集群(Mesos + Marathon + Chronos + Docker)][335]
[sentry -- Sentry is a modern error logging and aggregation platform.][336] -- [raven-python -- Raven is a Python client for Sentry][337] -- [docs][338]
[中国移动浙江公司数据中心操作系统(DCOS)实践][339]
[dcos -- DC/OS Build and Release tools][340] -- [dcos-ui][341] -- [dcos-docker][342] -- [dcos-example][343]
[pssh & pscp -- pssh为python编写的批量并行操作服务器的工具,pscp:批量并行拷贝][344] -- [Linux批量远程管理主机命令_pssh用法详解][345] -- [批量管理工具-pdsh|pssh][346]
<div class="md-section-divider"></div>
<div class="md-section-divider"></div>
对于一个企业建立微服务,需要考虑以下几种情况:
1.你的业务领域是什么?
2.事务边界在哪里?
3.微服务之间如何跨边界通讯?
4.数据库共享?
<div class="md-section-divider"></div>
由于运行 OpenWhisk 操作需要资源,所以最好使用 OpenWhisk 执行以下不是很频繁的计算任务,
比如:
处理上传的图像来创建缩略图,将它们保存到对象存储从移动应用程序获取地理位置数据,并调用 Weather API 来扩充它OpenWhisk对处理具有很高的并发性水平的系统也很有用,
比如:
将数据发送到云的移动应用程序
物联网部署,其中需要存储和处理传入的传感器数据
事件的示例包括对数据库记录进行更改、IoT 传感器读数超过特定温度、新代码落实到 GitHub 存储库,或者从 Web 或移动应用程序发起简单 HTTP 请求。来自外部和内部事件源的事件将通过触发器进行传递,并且规则允许操作对这些事件做出反应。
OpenWhisk 很适合用于从前端代码中除去装入密集型、潜在高峰(后台)任务并将这些任务作为操作实现。
<div class="md-section-divider"></div>
# 小说阅读
[悟空传][347]
![此处输入图片的描述][348]
![此处输入图片的描述][349]
![此处输入链接的描述][350]
![此处输入链接的描述][351]
![此处输入图片的描述][352]
![此处输入图片的描述][353]
<div class="md-section-divider"></div>
日志采用日志链的模式,日志入口生成一个全局的UUID,然后每一个服务有每一个服务的UUID编号,这样的话,日子的全过程都有了一个很好的标示,也可以监控整个日志的数据了,一个每一个服务的性能问题了。
<div class="md-section-divider"></div>
由于微服务不存在状体问题,所以当有些异步微服务发生的时候,当有些计算行任务发生的时候不能够很快的得到执行的状态,这样就需要一个消息中心,或者说是消息总线(消息队列)去处理这个问题。
<div class="md-section-divider"></div>
注册中心注册的信息包括项目的主机,服务的名称,服务的URL以及调用方式,通过:域名.服务名称.资源名称.请求方式
com.User.users.Get == Get /v1/api/users
<div class="md-section-divider"></div>
把活塞设计成可变球面. 当压缩时凸起, 增加压缩比; 当吸气时凹下, 增加吸气量. 因为球面是连续的, 一般实现上做成离散的, 除最内活塞外, 每一个活塞都是其内层活塞的气缸, 通过不同的曲轴半径可实现球面效果.
<div class="md-section-divider"></div>
涉及到钱的比较, 都要统一转成以"分"为单位, 再强制转成int型.
<div class="md-section-divider"></div>
服务框架
微服务化以后,为了让业务开发人员专注于业
务逻辑实现,避免冗余和重复劳动,规范研发
提升效率,必然要将一些公共关注点推到框架
层面。服务框架 ( 图 9) 主要封装公共关注点
逻辑,包括:
1. 服务注册、发现、负载均衡和健康检查,
假定采用进程内 LB 方案,那么服务自注
册一般统一做在服务器端框架中,健康检
查逻辑由具体业务服务定制,框架层提供
调用健康检查逻辑的机制,服务发现和负载均衡则集成在服务客户端框架中。
2. 监控日志,框架一方面要记录重要的框架
层日志、metrics 和调用链数据,还要将
日志、metrics 等接口暴露出来,让业务
层能根据需要记录业务日志数据。在运行
环境中,所有日志数据一般集中落地到企
业后台日志系统,做进一步分析和处理。
3. REST/RPC 和序列化,框架层要支持将业
务逻辑以 HTTP/REST 或者 RPC 方式暴露出
来,HTTP/REST 是当前主流 API 暴露方式,
在性能要求高的场合则可采用Binary/
RPC方式。针对当前多样化的设备类型(浏
览器、普通 PC、无线设备等 ),框架层要
支持可定制的序列化机制,例如,对浏览
器,框架支持输出 Ajax 友好的 JSON 消息
格式,而对无线设备上的 Native
App,
框架支持输出性能高的Binary消息格式。
4. 配置,除了支持普通配置文件方式的配置,
框架层还可集成动态运行时配置,能够在
运行时针对不同环境动态调整服务的参数
和配置。
5. 限流和容错,框架集成限流容错组件,能
够在运行时自动限流和容错,保护服务,
如果进一步和动态配置相
<div class="md-section-divider"></div>
因为模块化和分布式组成,一个良好定义的API对于微服务架构是至关重要的。这些都高于好的文档、逻辑资源命名和语义版本。理解终端的触发、工作负载的初始化方式也是至关重要的。
“应用中心”微服务由同步的请求/响应模型实现。API终端会通常经过纯HTTP协议而被客户端直接调用。因为期望得到实时响应,因此最好使用端对端通信方式。作为分布式系统,延迟因素和潜在的不可达终端是非常重要的。
“任务中心”微服务模型由事件驱动模型实现,比如当一个动作会自动触发了异步工作流。事件可能以各种形式到来,拥有广阔的来源,例如调度、网络钩子、回调、消息机制、传感器或者直接API调用。因为它的异步本质,在消息队列里的任务将保持请求直到它可以被执行。
4. 考虑使用API网关作为所有添加特性请求的单入口点,例如监控、鉴权、安全以及限流等。
5. “应用中心”微服务以运行的容器实现分布式。这意味着当一个请求到来时,系统需要知道容器进程处于哪里(IP地址和端口),所有它可以直接路由。这样的整个生态系统被服务注册和容器编排所围绕,所以为任务挑选正确的工具经常转变为你想要抽象的程度和控制的多少。
“任务中心”微服务按队列优先进行执行,意味着编排问题并不是“服务在哪里”而是“我在哪里可以运行服务”。运行任务的工作节点注册在系统,并可从队列获取。这意味着系统需要了解整个池的可用容量,所有它会启动一个边界内的新容器来执行这个进程。
6. 描绘出每个微服务的最优计算环境将有助于有效地分配资源。例如内存和/或CPU敏感的工作负载需要运行在更强力的硬件上。
7.
<div class="md-section-divider"></div>
我要这天,再遮不住我眼,
要这地,再埋不了我心,
要这众生,都明白我意,
要那诸佛,都烟消云散!
——今何在 《悟空传》
<div class="md-section-divider"></div>
任何组织设计一个系统(广义上的系统)都会产生一种设计,其结构为其组织通信结构的复本。
-- Melvyn Conway, 1967
Be of the web, not behind the web(善于利用网络,而不是限制使用网络。)
---- Ian Robinson
Be conservative in what you do; be liberal in what you accept from others.
像保守派那样去做,像自由派那样去接受其他的。
消费者驱动的契约(consumer-driven contracts)
消费者驱动的契约是存在紧密联系的服务契约三件套——提供者契约、消费者契约及消费者驱动的契约——中的一员,它从期望与约束的角度描述了服务提供者与服务消费者之间的关系:
1. 提供者契约(Provider contracts)——提供者契约是我们最为熟悉的一种的服务契约,参考 WSDL+XML Schema+WS-Policy。顾名思义,提供者契约是以提供者为中心的。提供者规定了它要提供什么;然后,各消费者便将自己绑定到这个一成不变的契约上。不论消费者实际需要多少功能,消费者接受了提供者契约,就将自己与该提供者的全体功能耦合起来了。
2. 消费者契约(Consumer contracts)——另一方面,消费者契约是对一个消费者的需求更为精确的描述。消费者契约描述了,在一次具体交互场合下,提供者功能中消费者需要的特定部分。消费者契约可被用来标注一个现有的提供者契约,另外消费者契约也有助于发现一个现今尚未规定的提供者契约。
3. 消费者驱动的契约(Consumer-driven contracts)——消费者驱动的契约描述的是服务提供者向其所有当前消费者承诺遵守的约束。一旦各消费者把自己的具体期望告知提供者,消费者驱动的契约就被创建了。在提供者方面创建的约束,确定了一个消费者驱动的契约。若提供者接受了一个消费者驱动的契约,那么它只需保证已有约束仍能得到满足,即可自行改进与修改其服务。
<div class="md-section-divider"></div>
当寻找把一个大的应用拆分成小的部分时,主管通常注意在技术层面,拆分成UI组、服务逻辑组和数据库组。
大部分的软件开发者都使用这样的开发模式:至力于提供一些被认为是完整的软件。一旦开发完成,软件将移交给维护部门,然后,开发组就可以解散掉了。
微服务的支持者认为,这种做法是不可取的,并提议开发组应该负责产品的整个生命周期。一个常见的证明是:Amazon的“你编译,你运维(you build, you run it)”的理念,它要求开发团队对软件产品的整个生命周期负责。这要求开发者每天都关注软件产品的运行情况,并与用户联系的更紧密,同时承担一些售后支持。
成熟的产品会与业务功能进行绑定。除了把软件看成既定功能的集合外,会进一步关心“软件如何帮助用户实现业务功能”这样的问题。
采用整体型的架构并不是没有原因的,但是越小的服务粒度越容易促进用户与服务提供商之前的关系。
```
docker-openvpn -- OpenVPN server in a Docker container complete with an EasyRSA PKI CA
minikube -- Run Kubernetes locally
helm -- The Kubernetes Package Manager
kargo -- Setup a kubernetes cluster
calicoctl -- Calico CLI tool and calico/node container
netsil -- Netsil is the observability and analytics company for modern cloud applications. The Netsil Application Operations Center (AOC) helps SREs and DevOps improve the reliability and performance of API and microservices driven production applications. At the heart of AOC is an auto-discovered service topology, which is rendered from live service interaction analysis. This enables effective application monitoring, incident response, capacity planning, and deploy management.
Kubernetes
heapster -- Compute Resource Usage Analysis and Monitoring of Container Clusters
crontab命令 -- crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似
在线工具
iBarn -- 网盘系统 -- owncloud -- A safe home for all your data -- 私有网盘系统
BigDataScript -- 大数据描述语言 -- code