转自:https://www.infoq.cn/article/4hjplbxo1xktefxzpqz8BFF 模式:微服务前端数据加载的最佳实践?设想一个场景,你需要使用微服务构建电子商务应用程序。你可以为客户、订单、产品、购物车等提供微服务,微服务暴露 API 给前端使用。但是,微服务提供给前端的数据可能不会按照前端需要的方式进行编排或过滤。这种情况下,前端需要一些逻辑来重新处理这些数据,同时在用户端使用这样的逻辑会占用更多的浏览器资源。在这样的情况下,我们可以使用 BFF 将一些前端逻辑转移到中间层,中间层就是 BFF。当前端请求一些数据时,它将调用 BFF 中的 API。BFF 将执行以下操作:调用相关的微服务 API 并获取所需数据根据前端展现来处理数据将格式化后的数据发送到前端因此,前端将有更少的逻辑,BFF 有助于简化数据展示,并为前端提供一个目的明确的接口。它如何适用于电子商务?下图显示了每个微服务如何通过 BFF 与前端连接。BFF 的角色正如我们已经探讨过的,BFF 充当前端和微服务之间的简单接口。理想情况下,前端团队也将负责管理 BFF。一个 BFF 只关注一个
矢量切片工具:tippecanoe转自:https://gishai.top/blog/posts/4ef7fe51.htmlTippecanoe 用于将 GeoJSON, Geobuf, 或者 CSV 格式的矢量要素转换为矢量瓦片。目的Tippecanoe 的目的是将数据制作为比例独立的视图,以使在任何缩放级别下,你都可以看到数据的密度和细节,而不是将数据简化或聚合。如果你提供的是 OpenStreetMap 所有的数据,在小比例尺下,你应该看到类似于All Streets的地图,而不是州际道路地图。如果你提供的是洛杉矶的所有详细的建筑数据,并且将地图缩放到小比例尺下,绝大部分的单体建筑将不再可辨,但是你应该可以看到每个街区的范围和变化。如果你提供的是一年内 twitter 推文的定位数据集,你应该可以发现所有兴趣点之间的关联和热门的旅游路线。安装OSX 操作系统使用 Homebrew 安装:$ brew install tippecanoe Ubuntu 系统最简单的方式是从源码中构建:$ git clone git@github.com:mapbox/tippecanoe.git
构建gobuilder镜像FROM golang:alpine AS builder LABEL stage=gobuilder # 配置代理 ENV CGO_ENABLED 0 ENV GO111MODULE on ENV GOPROXY https://goproxy.cn,direct RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \ apk update && \ apk upgrade && \ apk add --no-cache bash git openssh tzdata build-base RUN git config --global url."https://**@github.com".insteadof "https://github.com" 构建普通运行时镜像FROM alpine:latest # 更新最新镜像源列表 RUN s
备份源列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak命令行打开sources.list文件sudo vim /etc/apt/sources.list修改sources.list文件sudo vim /etc/apt/sources.list将源文件内容全部注释,并添加以下内容任意源阿里云源 deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main re
Docker常用命令镜像搜索镜像:docker search [OPTIONS] TERM 上传镜像:docker push [OPTIONS] NAME[:TAG] 下载镜像:docker pull [OPTIONS] NAME[:TAG] 提交镜像:docker commit [OPTIONS] CONTAINER NAME[:TAG] 构建镜像:docker build [OPTIONS] PATH 删除镜像:docker rmi [OPTIONS] IMAGE [IMAGE...] 增加镜像标签:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] 查看所有镜像:docker images [OPTIONS] [REPOSITORY[:TAG]]容器启动/重启容器:docker start/restart CONTAINER 停止/强停容器:docker stop/ kill CONTAINER 删除容器:docker rm [OPTIONS] CONTAINER [CONTAINER.
Xinbo