Posts

事件 事件源发送的事件是JSON格式,LAMBDA运行时把原始JSON事件转换为 对象并发送给函数代码。 事件的结构和内容由事件源决定 支持事件源的服务 Kinesis DynamoDB Simple Queue Service 权限 通过权限策略(permissions policy)来管理IAM用户,组或者角色对lambda API和资源(函数或函数层)访问权限。 权限策略也可以授权给资源本身,让资源或服务访问lambda。 每一个lamdba函数都有一个执行角色(execution role), 该角色授权lamdba函数 本身对其他资源和服务的访问。执行角色至少包含对CLOUDWATCH日志的访问权限。 lambda也通过执行角色请求对事件源的读取权限。 资源 函数 版本 别名 层级 举例:授权SNS 调用 my-function aws lambda add-permission --function-name my-function --action lambda:InvokeFunction --statement-id sns \ > --principal sns.amazonaws.com --output text {"Sid":"sns","Effect":"Allow","Principal":{"Service":"sns.amazonaws.com"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:ap-northeast-1:465691908928:function:my-function"} serveless backend Lambda allows to trigger execution of code in response to events in AWS, enabling serverless backend solutions. The Lambda Function itself includes source code

根据多年在IAAS/PAAS平台的建议经验,并帮助多个行业例如医疗,电信, 建筑行业客户向互联网IAAS/PAAS平台的迁移,在这里做一些直观的分享, 希望能为中小企业上云提供一些有价值的建议。

本帖中部分建议只是针对没有自己数据中心的中小企业,如果已经拥有自己的数据中心, 需要根据目前的计算能力选择相应的云服务厂商

云服务模型

RNA

从云服务模型可以看出,企业上云有以下路径可选。 但导向是一致的,专注业务,IT外包。

  • 从自建数据中心向IaaS平台迁移
  • 从IaaS平台向PaaS迁移
  • 在公有云厂家间迁移
  • 从IaaS平台向FaaS迁移
  • 混合云

上云的初级阶段: 购买云主机, 购买云主机的性价比指标和物理主机的指标完全不同, 如何选择最高性价比的云主机,参考

云主机主要性价比指标

硬盘转速的指标对云主机不再适用,云主机的性价比指标主要有以下几个:

  • 云主机内网/外网平均带宽(最核心指标)
  • 存储(网络硬盘)IO吞吐量
  • 初始化完成后首次资源利用率

其中内网平均带宽是最核心的指标,不仅关乎到MONEY的问题,而且对你的应用架构 起决定性的影响,原来的应用架构在云主机模式将会长期处于网络IO阻塞状态。造成 这种问题的根本原因不是你原来的架构不好,而是公有云厂商的网络性能太差,在2016 年的时候,阿里的平均带宽还不到100M每秒。AWS大概在200M每秒。

网络带宽是很多企业战略转型决定上云遇到的第一个大坑

内网平均带宽也是衡量私有云厂商服务能力的核心指标

所以公有云厂商又开始向你兜售混合云概念。混合云不符合公有云厂商的核心利益

国内外云厂商主要产品基准测试对比图

上云注意事项

上云的中级阶段:PaaS

如何选择PAAS供应商

上云的终级阶段: 不需要服务器。

如何选择FAAS供应商

https://github.com/wubigo/localstack-examples

Listen Notes(以下简称LN)是一个iPod试听资料搜索引擎和数据库,

它使用的技术是非常过时的,没有AI,没有深度学习,

没有区块链。“如果有谁一定要说我在使用AI,那他一定没有

使用真正的AI”。

通过阅读本帖,你能完全复制一个Listen Notes和其他相似的网站。

你不需要雇佣很多工程师。是否还记得,当脸书以5700万美元收购

Instagram的时候,Instagram总共只有13名员工,包括非工程技术

人员。Instagram是在2012初成立的,现在是2019,云计算技术更加

成熟,站在巨人的肩膀上,一个规模较小的工程团队更有可能做出一

些有意义的产品,即使是像我这样的OPC(一个人独立成立的公司)。

我发现本帖已经在HN和reddit上被广泛分享,对此,我在这里做些

澄清:

  • 本帖并不是最新的。LN使用的技术栈在不停的演进,经过过去两年的

    全职的开发,技术开始变得有点复杂了。LN在2017年初启动的时候

    只用了3台VPS.这里所说的“过时”是指我只使用了我熟悉的技术来快速

    的开发产品,聚焦到业务侧

  • 现在我每天只花20%的时间在工程技术上,其他的时间都在进行业务沟通,

    回复邮件,每天不断总结思考

  • 如果因为没有使用你推荐的技术,或者没有回复你提出的问题,而冒犯了

    你的话,请你原谅。我不能做到让每个人都开心满意

  • 本帖只是告诉你做互联网产品的一种方法,但并不是唯一方法。而且它可能

    不是最好的方法。它通过使用数据手段帮你了解技术世界。

https://broadcast.listennotes.com/the-boring-technology-behind-listen-notes-56697c2e347b

Create function index.js exports.handler = async function(event, context) { console.log("ENVIRONMENT VARIABLES\n" + JSON.stringify(process.env, null, 2)) console.log("EVENT\n" + JSON.stringify(event, null, 2)) return context.logStreamName } 打包 zip function.zip index.js aws lambda create-function --function-name my-function --zip-file fileb://function.zip --handler index.handler --runtime nodejs10.x --role arn:aws:iam::123456789012:role/lambda-cli-role --endpoint-url=http://localhost:4574 aws lambda get-function --function-name my-function --endpoint-url=http://localhost:4574 { "Code": { "Location": "http://localhost:4574/2015-03-31/functions/my-function/code" }, "Configuration": { "TracingConfig": { "Mode": "PassThrough" }, "Version": "$LATEST", "CodeSha256": "3d149vplmMjIEgZuPhQgnFJ+tndL4I9D11GL1qdgT6M=", "FunctionName": "my-function", "LastModified": "2019-09-29T01:16:43.

在windows,启动卷必须线启用共享驱动

启用共享驱动

1: Open "Settings" in Docker Desktop -> 
   "Shared Drives" -> 
   "Reset Credentials" -> 
   select drive "D" -> "Apply"

检查测试卷

docker run --rm -v d:/tmp:/data alpine ls /data

安装AWS CLI (venv) d:\code\venv>pip install awscli pip install awscli-local awslocal = aws –endpoint-url=http://localhost: 可以安装到系统环境 配置AWS CLI (venv) d:\code\venv>aws configure AWS Access Key ID [None]: any-id-is-ok AWS Secret Access Key [None]: fake-key Default region name [local]: local Default output format [None]: 命令行自动完成 $which aws_completer ~/code/venv/bin/aws_completer tee ~/.bashrc <<-'EOF' complete -C '~/code/venv/bin/aws_completer' aws EOF 安装AWS SAM CLI (venv) d:\code>pip install aws-sam-cli (venv) d:\code>sam --version SAM CLI, version 0.

bind eip gatsby develop -- --host=0.0.0.0 Prettier VS Code plugin JSX The hybrid “HTML-in-JS” is actually a syntax extension of JavaScript, for React, called JSX In pure JavaScript, it looks more like this: src/pages/index.js import React from "react" export default () => React.createElement("div", null, "Hello world!") Now you can spot the use of the ‘react’ import! But wait. You’re writing JSX, not pure HTML and JavaScript. How does the browser read that?

glide

To upgrade dependencies, please make the necessary modifications in glide.yaml and run glide update.

Add notification configuration to SNS Topic resource "aws_sns_topic" "topic" { name = "s3-event-notification-topic" policy = <<POLICY { "Version":"2012-10-17", "Statement":[{ "Effect": "Allow", "Principal": {"AWS":"*"}, "Action": "SNS:Publish", "Resource": "arn:aws:sns:*:*:s3-event-notification-topic", "Condition":{ "ArnLike":{"aws:SourceArn":"${aws_s3_bucket.bucket.arn}"} } }] } POLICY } resource "aws_s3_bucket" "bucket" { bucket = "your_bucket_name" } resource "aws_s3_bucket_notification" "bucket_notification" { bucket = "${aws_s3_bucket.bucket.id}" topic { topic_arn = "${aws_sns_topic.topic.arn}" events = ["s3:ObjectCreated:*"] filter_suffix = ".log" } } Add notification configuration to Lambda Function resource "aws_iam_role" "iam_for_lambda" { name = "iam_for_lambda" assume_role_policy = <<EOF { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Principal": { "Service": "lambda.

准备

  • 搭建测试环境

可以参考从源代码构件K8S开发环境

ML2插件 ML2插件允许openstack网络中同时使用多种二层的网络技术;不同的节点可以使用不同的网络机制 ML2能够与现在所有的代理无缝集成;以前使用的代理无需变更,只要将传统的core plugin替换ML2 ML2使得对新的网络技术支持更为简单;无需重新开发新的core plugin插件;只需开发相应的机制驱动 ML2对二层的网络进行抽象;解锁了neutron所支持的网络类型(type)与访问这些网络类型的虚拟网络实现机制(mechansim);并通过驱动的形式进行扩展 不同的网络类型对应不同的类型驱动(type driver);由类型管理器(type manager)进行管理 不同的网络实现机制对应不同的机制驱动(mechansim);由机制管理器(mechansim manager)进行管理 neutron 支持的每一种网络类型都有一个对应的ML2类型驱动 类型驱动负责维护网络类型的状态;执行验证、创建网络等工作 目前neutron已经实现的网络类型包括:flat、local、vlan、vxlan、gre 目前neutron已经实现的网络机制有三种类型: 基于代理(agent-based): 包括linux bridge、open vswitch 基于控制器(controller-based): 包括open daylight、vmwavre NSX等 基于物理交换: 包括cisco nexus、arista、mellanox等 Mechanism drivers and L2 agents Mechanism Driver L2 agent Open vSwitch Open vSwitch agent Linux bridge Linux bridge agent SRIOV SRIOV nic switch agent MacVTap MacVTap agent linux bridge 代理 linux bridge 是成熟可靠的neutron二层网络虚拟化技术,支持local、flat、vlan、vxlan这四种网络类型,目前不支持gre

删除 systemctl list-unit-files --all | grep yunion systemctl disable yunion-executor systemctl disable yunion-registry systemctl disable kubelet rm -rf /opt/yunion systemctl disable libvirtd.service ip link set virbr0 down brctl delbr virbr0 operator kubectl logs -n onecloud default-region- -c init kubectl edit deployments. -n onecloud onecloud-operator containers: - command: - /bin/onecloud-controller-manager - -sync-user onecloud-operator,加上‘-sync-user’ 会自动修改用户密码, 然后再 kubectl delete deployments -n onecloud default-region 等待重建再试试 WEB 前端代码是很多 git 仓库组成的,需要用 ‘yarn sync release/3.

避开Tiller使用Helm部署K8S应用 Tiller存在的问题 破坏RBAC访问机制 全局的Tiller拥有cluster-admin角色,所以在安装过程中,服务以cluster-admin 角色可以越权访问资源 部署名字不能重复且唯一 部署名字唯一且很多chart中部署名字也添加到服务名中,导致服务名字混乱。 独立使用helm 获取模板 使用配置修改模板 生产yaml文件 git clone https://github.com/istio/istio.git cd istio git checkout 1.0.6 -b 1.0.6 helm template install/kubernetes/helm/istio --name istio --namespace istio-system \ --set security.enabled=false \ --set ingress.enabled=false \ --set gateways.istio-ingressgateway.enabled=false \ --set gateways.istio-egressgateway.enabled=false \ --set galley.enabled=false \ --set sidecarInjectorWebhook.enabled=false \ --set mixer.enabled=false \ --set prometheus.enabled=false \ --set global.proxy.envoyStatsd.enabled=false \ --set pilot.sidecar=false > $HOME/istio-minimal.yaml kubectl create namespace istio-system kubectl apply -f $HOME/istio-minimal.

Container When working with cloud native solutions such as Kubernetes, resources are volatile. Services come and go by design, and that’s fine—as long as the whole system operates in a regular way. Classical monitoring solutions aren’t always able to handle this transience gracefully Graphite Graphite has no direct data collection support. Carbon listens passively for data, but in order to enable data collection, you should include solutions like fluentd, statd, collectd, or others in your time series data pipeline.

Headless services Without POD selectors This creates a service, but it doesn’t know where to send the traffic. This allows you to manually create an Endpoints object that will receive traffic from this service. kind: Endpoints apiVersion: v1 metadata: name: mongo subsets: - addresses: - ip: 10.240.0.4 ports: - port: 2701 CNAME records for ExternalName This service does a simple CNAME redirection at the kernel level, so there is very minimal impact on performance.

INSTALL docker docker run -d --name=netdata \ -p 19999:19999 \ -v /etc/passwd:/host/etc/passwd:ro \ -v /etc/group:/host/etc/group:ro \ -v /proc:/host/proc:ro \ -v /sys:/host/sys:ro \ -v /etc/os-release:/host/etc/os-release:ro \ --cap-add SYS_PTRACE \ --security-opt apparmor=unconfined \ netdata/netdata script bash <(curl -Ss https://my-netdata.io/kickstart.sh) --stable-channel --disable-telemetry Attempting another netdata start using command 'systemctl start netdata' [/tmp/netdata-kickstart-uytL3g/netdata-v1.21.1]# systemctl start netdata OK OK netdata started! Downloading default configuration from netdata... [/tmp/netdata-kickstart-uytL3g/netdata-v1.21.1]# curl -sSL --connect-timeout 10 --retry 3 http://localhost:19999/netdata.

物联网架构

An IoT Architecture consists of the following: - Peripherals, which we call “things”. - Sensors attached to these things to gauge and transmit their data and information. - Network connection through which data is transmitted (wireless or wired). - Remote Cloud to which data is transmitted by the system.

物联网核心构件

Sensors

Microcontrollers

Gateways

Applications

物联网分层架构

The most important conversation you ever have is the one with yourself

7 lvevel communication

典型无服务器架构应用场景

  • 应用后台

  • 数据处理

  • 实时分析

  • 遗留应用API代理

  • 调度服务

  • RPA

最新实现参考