小编use*_*763的帖子

将Amazon SQS与多个消费者一起使用

我有一个基于服务的应用程序,它使用具有多个队列和多个消费者的Amazon SQS.我这样做是为了实现基于事件的体系结构并解耦所有服务,其中不同的服务对其他系统的状态变化做出反应.例如:

  • 注册服务:
    • 当新用户注册时,发出事件'registration-new'.
  • 用户服务:
    • 在用户更新时发出事件'用户更新'.
  • 搜索服务:
    • 从队列'registration-new'读取并在搜索中索引用户.
    • 从队列"用户更新"中读取并在搜索中更新用户.
  • 指标服务:
    • 从"registration-new"队列中读取并发送到Mixpanel.
    • 从队列'用户更新'中读取并发送到Mixpanel.

我有很多问题:

  • 进行轮询时,可以多次接收消息.我可以设计很多系统是幂等的,但是对于某些服务(例如度量服务)来说要困难得多.
  • 需要在SQS中从队列中手动删除消息.我曾想过实现一个"消息处理服务",它在所有服务都收到消息时处理消息的删除(每个服务在处理消息后都会发出'消息确认'事件).

我想我的问题是:我应该使用哪些模式来确保我可以在SQS中为单个队列拥有多个使用者,同时确保消息也可以被可靠地传递和删除.谢谢您的帮助.

event-based-programming amazon-sqs amazon-web-services microservices

26
推荐指数
2
解决办法
2万
查看次数

创建更新ng-model的angular-js指令

我正在尝试创建一个包装twitter typeahead插件的指令.到目前为止我所拥有的是:

HTML:

<input ng-twitter-typeahead type="text" ng-model="participant" data="exampleData" />
{{ participant }}
Run Code Online (Sandbox Code Playgroud)

我想要在typeahead上选择某些内容时更新'参与者'的值.预先输入本身正常,但我无法捕获所选值.以下是javascript:

var app = angular.module('myApp', [])
app.directive('ngTwitterTypeahead', function () {
  return {
    restrict: 'EA',
    scope: {
      data: '='
    },
    link: function ($scope, $element, $attrs) {
      $element.typeahead($scope.data);

      $element.bind('typeahead:selected', function(obj, datum) {        
         // I really don't know how to do this part
         // the variable 'datum' is what I want to be passed to ng-model
         // I tried things like:
            // Including the ngModelController and typing:
            // ngModel.$setViewValue(datum)
            // but …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-directive

20
推荐指数
1
解决办法
3万
查看次数

使用convert_variables_to_constants保存tf.trainable_variables()

我有一个Keras模型,我想转换为Tensorflow protobuf(例如saved_model.pb).

该模型来自vgg-19网络上的传输学习,其中头部被切断并使用完全连接的+ softmax层进行训练,而其余的vgg-19网络被冻结

我可以keras.backend.get_session()在Keras中加载模型,然后使用在tensorflow中运行模型,生成正确的预测:

frame = preprocess(cv2.imread("path/to/img.jpg")
keras_model = keras.models.load_model("path/to/keras/model.h5")

keras_prediction = keras_model.predict(frame)

print(keras_prediction)

with keras.backend.get_session() as sess:

    tvars = tf.trainable_variables()

    output = sess.graph.get_tensor_by_name('Softmax:0')
    input_tensor = sess.graph.get_tensor_by_name('input_1:0')

    tf_prediction = sess.run(output, {input_tensor: frame})
    print(tf_prediction) # this matches keras_prediction exactly
Run Code Online (Sandbox Code Playgroud)

如果我不包含该行tvars = tf.trainable_variables(),则该tf_prediction变量完全错误,并且根本不匹配输出keras_prediction.事实上,输出中的所有值(具有4个概率值的单个数组)完全相同(~0.25,全部加1).这让我怀疑,如果tf.trainable_variables()没有先调用头部的权重,只是初始化为0 ,这在检查模型变量后得到确认.在任何情况下,调用tf.trainable_variables()都会导致张量流预测正确.

问题是,当我尝试保存此模型时,来自的变量tf.trainable_variables()实际上并没有保存到.pb文件中:

with keras.backend.get_session() as sess:
    tvars = tf.trainable_variables()

    constant_graph = graph_util.convert_variables_to_constants(sess, sess.graph.as_graph_def(), ['Softmax'])
    graph_io.write_graph(constant_graph, './', 'saved_model.pb', as_text=False)
Run Code Online (Sandbox Code Playgroud)

我要问的是,如何将Keras模型保存为tf.training_variables() …

keras tensorflow

14
推荐指数
1
解决办法
1290
查看次数

从外部流星应用程序调用前端方法

我正在制作一个基于服务的dockerized应用程序.有些服务将用流星写,有些则不会.

其中一项服务是注册服务,用户可以在该服务中注册该平台.

在做微服务时,通常我会做以下事情:

var MyService = DDP.connect(service_url);
var MyOtherService = DDP.connect(other_service_url);
var RegistrationService = DDP.connect(registration_service_url);
Run Code Online (Sandbox Code Playgroud)

我想要做的是使用该loginWithFacebook方法.问题是Meteor.loginWithFacebook在前端使用将在主前端服务器上调用其后端方法.

但是,我想在RegistrationService服务器(具有相关包)上调用其后端方法.原因是因为我使用Accounts.onCreateUser钩子做额外的东西,还因为我想保持注册服务与前端分开.

为了清楚起见,即使它不正确,想象一下我有这个:

'click #facebook-login': function() {
  Meteor.loginWithFacebook(data, callback)
}
Run Code Online (Sandbox Code Playgroud)

但是,我希望该loginWithFacebook方法RegistrationService 在调用客户端方法.loginWithFacebook时使用服务器端方法,所以我实际上想要做一些事情来实现以下效果:

'click #facebook-login': function() {
  RegistrationService.loginWithFacebook(data, callback)
}
Run Code Online (Sandbox Code Playgroud)

任何有关这方面的帮助将不胜感激.谢谢!

meteor microservices meteor-accounts

10
推荐指数
1
解决办法
680
查看次数

Mongodb按日期汇总与空的日程箱

我正在尝试在MongoDB中进行每日聚合.我已经有一个聚合,我按天成功地对数据进行分组.但是,我想以这样的方式进行聚合,在这种情况下,没有数据显示的日期是空的.也就是说,它们是空箱.

以下是我到目前为止的情况.我无法在MongoDB文档中找到任何内容,或者建议如何进行聚合并生成空箱:

app.models.profile_view.aggregate(
    { $match: { user: req.user._id , 'viewing._type': 'user' } },
    { $project: { 
        day: {'$dayOfMonth': '$start'},month: {'$month':'$start'},year: {'$year':'$start'},
        duration: '$duration'
    } },
    { $group: {
        _id: { day:'$day', month:'$month', year:'$year' },
        count: { $sum: 1 },
        avg_duration: { $avg: '$duration' }
    } },
    { $project: { _id: 0, date: '$_id', count: 1, avg_duration: 1 }}
).exec().then(function(time_series) {
    console.log(time_series)
    return res.send(200, [{ key: 'user', values: time_series }])
}, function(err) {
    console.log(err.stack)
    return res.send(500, { error: err, …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js

5
推荐指数
1
解决办法
1252
查看次数

Google云端HTTP负载均衡器始终为流量应用返回不健康的实例

我正在尝试在Google云上为我的Meteor应用程序设置HTTP负载均衡器.我正确设置了应用程序,我知道这是因为我可以访问网络负载均衡器中给出的IP.

但是,当我尝试设置HTTP负载均衡器时,运行状况检查总是说实例是不健康的(即使我知道它们不是).我尝试在我的应用程序中包含一个返回状态200的路由,并将健康检查指向该路由.

这正是我所做的,一步一步:

  1. 为应用程序创建新的实例模板/组.
  2. 上传图片到谷歌云.
  3. 为应用程序创建复制控制器和服务.
  4. 网络负载均衡器是自动创建的.此外,有两个防火墙规则允许所有IP上的HTTP/HTTPS流量.

然后我尝试创建HTTP负载均衡器.我在负载均衡器中创建了一个后端服务,其中所有虚拟机都对应于流星应用程序.然后我创建一个新的全局转发规则.无论如何,实例都标记为"不健康",并且来自全局转发规则的IP返回"服务器错误".

meteor google-cloud-platform kubernetes

3
推荐指数
1
解决办法
1303
查看次数

允许基于日期访问的权限设计模式

我正在寻找在我的应用程序中实现授权(非身份验证)方案的方法。

系统中目前有两个角色:A 和 B,但可能还有更多。用户只有一个角色。

基本上,我现在设置的是两个数据库表。一种是针对模型的基于角色的权限,另一种是针对特定用户的权限。我认为这样,用户可以根据他们基于角色的权限拥有一组默认权限,但他们也可以授予/撤销特定的权限。

例如:

table: user_permissions
columns:
    user_id: [int]
    action: [string]
    allowed: [boolean]
    model_id: [int]
    model_type: [string]

table: role_permissions
columns:
    role: [int]
    action: [string]
    model_type: [string]        
Run Code Online (Sandbox Code Playgroud)

user_permissions表中,该allowed字段指定是否允许该操作,因此如果该值为 0,则可以撤消权限。

在另一个表中,我有每个动作的定义:

table: model_actions
columns:
    action: [string]
    bitvalue: [int]
    model_type: [string]
Run Code Online (Sandbox Code Playgroud)

我这样做是为了当我检查模型的权限时,例如 ['create', 'delete'],我可以使用按位和操作来比较用户的权限和我正在检查的权限。例如,模型 X 可能具有以下 model_actions:

action: 'create'
bitvalue: 4
model_type: X

action: 'delete'
bitvalue: 2
model_type: X

action: 'view'
bitvalue: 1
model_type: X
Run Code Online (Sandbox Code Playgroud)

如果我的用户/角色权限指定模型 X 的创建、查看和删除操作分别为 1、0 和 1,则根据model_actions表将其表示为 110 。当我检查是否可以创建模型X时,我使用create为4的事实来构造位数组100。如果110和100的按位AND运算为100,则该权限有效。

无论如何,我想我已经找到了一个细粒度的权限设计模式。如果不是,请随时就该主题对我进行教育。

我的问题的实际重点涉及以下方面: …

permissions authorization role-base-authorization

2
推荐指数
1
解决办法
1729
查看次数