小编And*_*ter的帖子

尤里卡和Kubernetes

我正在整理一个概念证明,以帮助使用Spring Boot/Netflix OSS和Kubernetes一起识别陷阱.这也是为了证明Prometheus和Graphana等相关技术.

我有一个Eureka服务设置,在我的Kubernetes clouster中没有任何问题.这被命名为discovery,并在使用K8添加到K8时被命名为"discovery-1551420162-iyz2c"

kubectl run discovery --image=xyz/discovery-microservice --replicas=1 --port=8761

对于我的配置服务器,我正在尝试使用基于逻辑URL的Eureka,所以在我的bootstrap.yml中

server:
  port: 8889

eureka:
  instance:
    hostname: configserver
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://discovery:8761/eureka/

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/xyz/microservice-config
Run Code Online (Sandbox Code Playgroud)

我正在开始使用它

kubectl run configserver --image=xyz/config-microservice --replicas=1 --port=8889
Run Code Online (Sandbox Code Playgroud)

该服务最终运行命名为configserver-3481062421-tmv4d.然后我在配置服务器日志中看到异常,因为它试图找到eureka实例而不能.

我有相同的设置使用docker-compose本地链接,它启动各种容器没有任何问题.

discovery:
  image: xyz/discovery-microservice
  ports:
   - "8761:8761"
configserver:
  image: xyz/config-microservice
  ports:
   - "8888:8888"
  links:
   - discovery
Run Code Online (Sandbox Code Playgroud)

我怎么能设置像eureka.client.serviceUri这样的东西,这样我的微服务可以在不知道K8集群内的固定IP地址的情况下定位他们的同行?

spring-boot kubernetes microservices netflix-eureka spring-cloud-netflix

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

在Spring Boot应用程序中使用API​​网关时,HATEOAS路径无效

我有两个Spring启动应用程序,其中一个作为API网关(如本文所讨论的Spring示例).连接到第一个的另一个是使用spring-data-rest(spring-data-neo4j-rest)公开配置文件服务.

第一个应用程序从端口8080开始,并使用zuul将请求路由到第二个,如下所示:

zuul:
  routes:
    profiles:
      path: /profiles/**
      url: http://localhost:8083/profiles/  
Run Code Online (Sandbox Code Playgroud)

这一切都运行良好,并从第二个应用程序提供http:// localhost:8080/profiles的请求.但问题是响应中的HATEOAS链接不正确.调用第二个服务的响应是正确的:

{
    "_links": {
        "self": {
            "href": "http://localhost:8083/profiles{?page,size,sort}",
            "templated": true
        },
        "search": {
            "href": "http://localhost:8083/profiles/search"
        }
    },
    "_embedded": {
        "profiles": [
            {
                "name": "Andrew Rutter",
                "_links": {
                    "self": {
                        "href": "http://localhost:8083/profiles/0"
                    }
                }
            },
            {
                "name": "Andrew Rutter",
                "_links": {
                    "self": {
                        "href": "http://localhost:8083/profiles/1"
                    }
                }
            }
        ]
    },
    "page": {
        "size": 20,
        "totalElements": 2,
        "totalPages": 1,
        "number": 0
    }
}
Run Code Online (Sandbox Code Playgroud)

但当这回到我的API网关时,链接正在被重写

{
  "name": "Andrew Rutter", …
Run Code Online (Sandbox Code Playgroud)

spring spring-data-rest spring-hateoas spring-boot spring-cloud

8
推荐指数
1
解决办法
4396
查看次数

如何为 Docker Compose 配置 dns 条目

我正在设置一个 Spring 应用程序以使用 compose 运行。应用程序需要建立与 ActiveMQ 的连接,该连接可以为开发人员本地运行,也可以与现有实例建立连接以进行登台/生产。

我设置了以下内容,这对于本地开发非常有用:

amq:
    image: rmohr/activemq:latest
    ports:
      - "61616:61616"
      - "8161:8161"
legacy-bridge:
    image:  myco/myservice
    links:
      - amq
Run Code Online (Sandbox Code Playgroud)

在应用程序配置中,我将 AMQ 连接声明为

broker-url=tcp://amq:61616
Run Code Online (Sandbox Code Playgroud)

运行 docker-compose up 运行得很好,activeMQ 在本地启动,我的应用程序容器启动并连接到它。

现在,我需要将其设置为暂存/生产,其中 ActiveMQ 实例在基础设施内的现有硬件上运行。我的想法是要么使用 spring 配置文件来处理不同的配置,在这种情况下,“broker-url=tcp://amq:61616”的应用程序配置条目将变得类似,broker-url=tcp://some.host.here:61616或者找到某种方法在我的生产中创建 dns 条目docker-compose.yml 会将amqdns 条目指向关联的暂存或生产队列。

这里最好的方法是什么?如果是 DNS,我如何在 compose 中进行设置?

谢谢!

docker spring-boot docker-compose

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

是否可以基于每个商店定义Magento布局更新

我有一个运行两个不同网站的Magento安装.一个销售电子书而另一个不销售,因此业务团队希望从应用程序的"我的帐户"区域中的客户导航块中删除"我的下载"链接.

我可以看到在design/frontend/base/layout/downloadable.xml中定义的链接,但看不到任何定义的方法,只允许我在其中一个网站上禁用链接.显然,我可以覆盖这个XML以关闭全局,但我需要将更改限制在范围内.

如何在多站点Magento安装中的单个网站或商店中定义布局覆盖?

根据以下答复,我做了以下工作:

创建了app/local/Mage/Customer/Block/Account/Navigation.php并添加了一个不在核心代码中的方法removeLink().

如果我在local.xml中进行了以下更改,则删除下载链接:

<?xml version="1.0" encoding="UTF-8"?>
<layout>
    <default>
        <remove name="catalog.compare.sidebar"/>
    </default>   
    <customer_account>
        <reference name="customer_account_navigation">
            <action method="removeLink" translate="label" module="downloadable"> <name>downloadable_products</name></action>
        </reference>
    </customer_account>
</layout>
Run Code Online (Sandbox Code Playgroud)

但是,如果尝试针对特定商店,则不是.例如

<?xml version="1.0" encoding="UTF-8"?>
<layout>
    <default>
        <remove name="catalog.compare.sidebar"/>
    </default>
    <STORE_mm>
    <customer_account>
        <reference name="customer_account_navigation">
            <action method="removeLink" translate="label" module="downloadable"> <name>downloadable_products</name></action>
        </reference>
    </customer_account>
    </STORE_mm>
</layout>
Run Code Online (Sandbox Code Playgroud)

magento

6
推荐指数
1
解决办法
6644
查看次数

在Spring Boot中确保内部微服务调用安全的最佳方法是什么

我正在草拟一个简单的应用程序,其中将包括三个松散耦合的服务:身份验证(在春季安全性下使用OAuth2),配置文件和首选项,数据收集。我正在尝试确定保护或构建这些服务之间的安全调用的最佳方法。考虑以下两种用户情况。在每种情况下,用户都已通过身份验证,并且请求将包含指向初始服务端点的有效JWT令牌:

情况1:用户想要编辑自己喜欢的水果的偏好。该应用程序将对Profile / Preference服务进行身份验证的调用,以获取其首选项,然后回发更新的首选项。

情况2:他们向数据收集服务发出请求,该服务将轮询杂货店API以获取水果价格。这需要从配置文件和首选项服务中查找其首选水果。

我的问题是,确保上述案例2的配置文件和首选项服务的最佳方法是什么。我觉得有三种可能的方法:

  1. 每个内部请求都将需要包括任何身份验证标头才能在当前用户上下文中传递
  2. 每个内部请求都需要以其他方式作为API用户进行身份验证
  3. 每个内部请求都将需要到达不同的终结点,该终结点没有公开公开,也没有连接到负载均衡器中以用于内部流量

Spring Boot的某个方面是否提供了开箱即用的功能?

spring spring-security spring-integration spring-boot spring-security-oauth2

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

是否可以过滤提要

是否可以对流中的提要实施过滤?我希望允许用户关注其他用户帖子,但将这些帖子标记为各种类别。我们希望选择一个足球类别,并仅查看我关注的人发布的带有该标签的帖子,或者如果该类别是所有体育项目,则可能是一组标签。

查看 api 和文档,似乎提要以单个属性为中心,因此我可以请求我关注的人的所有帖子,但并非我关注的人的所有帖子都是关于 NCAA 或 NFL 的。

getstream-io

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

如何在 EasyAdminBundle 中设置自定义表单/页面

我已经能够使用 Symfony EasyAdminBundle 为项目构建一个简单的 CRUD 应用程序,并且它对于基于正常实体的用例非常有效。我还有一些额外的用例,我想做一些事情,比如重建数据。对于这些,我必须捕获某些请求属性,传递给控制器​​,然后委托给远程服务的后端 API 调用。

这一切都可以在 Symfony 中完成,但我在如何将其连接到 EasyAdmin 视图/工作方法方面遇到了麻烦。理想情况下,我希望这是一个易于管理的页面,并且不会丢失左侧菜单等。到目前为止,我发现做到这一点的唯一方法是创建一个模型类,它使用现有的表之一,但只有一些属性我需要进入 API。然后,我覆盖控制器操作,而不是执行默认保存,而是针对该远程 API 进行处理。

这种方法的问题在于,显然我现在绑定到 Doctrine 实体,这对于不可映射到数据库的请求来说会出现问题。

有没有一种方法可以定义一个逻辑实体,让我利用关联,以便我可以进行查找等,这些实体将无缝连接到捆绑包中,但实际上并不绑定到后端数据库表或视图?

symfony doctrine-orm symfony2-easyadmin

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

Gatsby 未生成正确的静态 HTML 文件

我正在开发一个基于 Gatsby 的网站,该网站目前进展顺利。但是在为生产构建时遇到了一个问题,我们没有在各种页面索引文件中获得任何静态 html,相反,看起来 Gatsby 将尝试从 javascript 注入页面,这与我们的预期相反。

我看过一些与 Gatsby 离线插件相关的帖子,但我已将其禁用,但这并没有解决问题。我们的页面不包含静态 html 输出,并且我希望 react-helmet 注入的元内容也不存在。

是否有关于如何调试构建以查看可能重置静态输出并将其替换为动态生成的 Gatsby 引导程序代码的任何建议。

该网站使用的插件是:

 plugins: [
    `gatsby-plugin-react-helmet`,
    `gatsby-transformer-sharp`,
    `gatsby-plugin-sharp`,
    {
      resolve: `gatsby-plugin-manifest`,
      options: {
        name: `gatsby-starter-default`,
        short_name: `starter`,
        start_url: `/`,
        background_color: `#663399`,
        theme_color: `#663399`,
        display: `minimal-ui`,
        icon: `src/images/favicon.png`, // This path is relative to the root of the site.
      },
    },
    `gatsby-transformer-json`,
    {
      resolve: `gatsby-source-filesystem`,
      options: {
        name: 'data',
        path: `${__dirname}/src/data/`,
      },
    },
    {
      resolve: `gatsby-source-filesystem`,
      options: {
        name: `images`,
        path: `${__dirname}/src/images`,
      },
    },
    `gatsby-plugin-styled-components`, …
Run Code Online (Sandbox Code Playgroud)

reactjs gatsby

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

在fabric.js中设置背景图像会在单击时引发异常

我试图使用fabric.js设置更改画布的背景图像,但遇到一些不稳定.添加背景调用工作,没有麻烦,但如果我然后单击画布上的任何地方它一片空白,似乎转移到选择模式 - 虽然这只是似乎是由于未捕获的异常.

我无法弄清楚导致这种行为的原因.它在这个页面http://fabricjs.com/customization/上工作正常,但是下面的jsfiddle失败了http://jsfiddle.net/YH9yD/20/

var canvas = window._canvas = new fabric.Canvas('c');
canvas.add(new fabric.Circle({ radius: 30, fill: '#f55', top: 100, left: 100 }));
canvas.setBackgroundImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {
    backgroundImageOpacity: 0.5,
    backgroundImageStretch: false
});
this.__canvases.push(canvas);
Run Code Online (Sandbox Code Playgroud)

javascript fabricjs

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