我们创建了 .yaml 文件来在 Kubernetes 集群中部署 osrm/osrm-backend (https://hub.docker.com/r/osrm/osrm-backend/tags)。
我们首先在节点的卷中下载pbf文件,然后为服务创建必要的文件,最后服务启动。
您可以在下面找到yaml文件:
apiVersion: v1
kind: Service
metadata:
name: osrm-albania
labels:
app: osrm-albania
spec:
ports:
- port: 5000
targetPort: 5000
name: http
selector:
app: osrm-albania
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: osrm-albania
spec:
replicas: 1
selector:
matchLabels:
app: osrm-albania
template:
metadata:
labels:
app: osrm-albania
spec:
containers:
- name: osrm-albania
image: osrm/osrm-backend:latest
command: ["/bin/sh", "-c"]
args: ["osrm-extract -p /opt/car.lua /data/albania-latest.osm.pbf && osrm-partition /data/albania-latest.osrm && osrm-customize /data/albania-latest.osrm && osrm-routed --algorithm mld /data/albania-latest.osrm"]
ports:
- containerPort: 5000
name: osrm-port
volumeMounts:
- name: albania
readOnly: false
mountPath: /data
initContainers:
- name: get-osrm-file
image: busybox
command: ['wget', 'http://download.geofabrik.de/europe/albania-latest.osm.pbf', '--directory-prefix=/data']
volumeMounts:
- name: albania
readOnly: false
mountPath: /data
volumes:
- name: albania
emptyDir: {}
问题是我们需要定期更新osrm服务使用的地图数据。这意味着能够重新下载pbf文件并重新创建服务所需的文件。
这可以通过kubernetes cronjobs实现,后者可能需要使用持久卷(kubernetes中的Cron Jobs-连接到现有Pod,执行脚本)。
这是获得新地图数据和刷新osrm服务使用的数据的唯一方法吗?具体如何?有没有更好更简单的方法来实现这一点?
这是一个棘手的情况,我在我的集群中遇到了同样的问题,我修复了在更多pod中划分作业的问题:
通过这种方式,将pod 1、2和3设置为cron作业,每个pod将执行所有操作而不会破坏服务。这个问题是由于前3次操作的大量时间(2到3小时)造成的。
一旦达到数据类型的限制,我想增加该数据类型的大小。例如,假设我有一门课: 一旦我更改了counter.x的值,我希望它将x提升为无符号int而不是无符号short。 我这样做的原因是为了在计数器类中存储尽可能少的内存。
问题内容: 我经常发现自己需要过滤a 或使用谓词来检查给定字段是否具有给定值。 比如说我有这个POJO: 我想根据的值过滤对象的: 是否会有一种方便的方法来为该方法生成谓词?我注意到有,但不符合需要。 我可以很容易地这样写: 并将其用作: 但我希望尽可能重用JDK中的现有方法。 问题答案: 没有内置的工厂方法,您可以通过查看JFC中的所有用法并查找“ …中返回谓词的方法” 来轻松检查。除了自身内部
问题内容: 拥有下一张原始地图: 在G1,G2和G3是不同年龄段的人群时,如何创建这样的新地图: 新密钥是每个组中的最大年龄。 我已经试过了: 但是编译器对我说:在这段代码中,“此表达式的目标类型必须是函数接口”: 任何帮助,将不胜感激。 问题答案: toMap使用和的功能。您在代码中正确地执行了此操作,但是对于,您却没有正确执行此操作,因此您需要包含以下函数: 注意 。 此外,由于您不使用地图键
问题内容: 一直困扰我的是Javascript中的方法多么不可预测。 根据我的经验,在很多情况下计时器都非常不准确。所谓不准确,是指实际延迟时间或多或少地相差250-500ms。尽管这不是很长的时间,但是使用它来隐藏/显示UI元素时,时间显然是显而易见的。 是否有任何技巧可以确保准确执行(无需借助外部API),或者这是一个失败的原因? 问题答案: 是否有任何技巧可以确保准确执行(无需借助外部API
我试着在Firebase Analytics中吸引观众,将“app version”设置为“contains‘debug’”。我的应用程序的调试版本在版本名字符串的末尾追加“-debug”。 但是,当我运行应用程序时,虽然Firebase为我的会话记录数据,但它没有为“调试观众”记录任何数据。 是否有一种方法来创建开发人员构建的受众,不管是通过版本名,还是任何其他方法? 谢谢!
有没有Angular2的方法可以做到这一点,或者我只是使用老式的JavaScript?