Solo  当前访客:3 登录 注册

喧哗博客-http://blog.xuahua.com

繁华过后的沉寂--技术经验分享
浏览次数: 95,037    文章总数: 91    评论总数: 3
存档:
2019 年 01 月 (2)

微信公众号分享接口 权限校验填坑 有更新!

微信公众号分享,使用 http://res2.wx.qq.com/open/js/jweixin-1.4.0.js  调用jssdk的时候,权限校验提示config:fail 或者无效签名。

总结以上可能会出错的原因

1, 在公众号后台,功能设置-业务域名要设成 m.xxx.com JS域名也要设成 m.xxx.com

2,通过 appId,appSecret 获取 access_token,此access_token要在服务器缓存.

地址 

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

3,通过 access_token 获取jsapi_ticket ,此jsapi_ticket 要在服务器缓存。

地址 

https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi

4,分享接口校验签名,签名顺序 

"jsapi_ticket=" + jsapiticket + "&noncestr=" + noncestr + "&timestamp=" + timestamp + "&url=" + url

注意此处为不写 nonstr
而在jssdk中权限签名



wx.config({
    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId: '', // 必填,公众号的唯一标识
    timestamp: , // 必填,生成签名的时间戳
    nonceStr: '', // 必填,生成签名的随机串
    signature: '',// 必填,签名
    jsApiList: [] // 必填,需要使用的JS接口列表
});

注意红色,粗体大小写。

原因:

当前要分享的页面地址,如果是从其他微信分享过来的,地址栏上面会带有二个参数 from=groupmessage&isappinstalled=0 这样的二个参数。

如果你把这二个参数带上去签名,那么肯定会提示无效签名。

如果你只是截取地址,参与签名也会提示无效签名。

正确做法,再做一次转发,主动把微信后面带的参数拿掉为止。

 

springcloud 性能优化

项目上线,准备进行压力测试,自己写了个测试工具,对项目的某个接口进行压测;

服务器配置 : 阿里云 centos7  2核 8g 

运行项目关系:

  接口---》zuul 处理--》consumer项目 --》实际处理业务项目

通过测试工具压力测试,发现只要上20就会提示服务器异常,发现有些默认值是20,所以把自己的一些处理方法整理一下,作为以后借鉴。

 

1,zuul 优化配置如下:

ribbon:
  ReadTimeout: 15000
  ConnectTimeout: 15000
  MaxAutoRetries: 0 ##最大允许重试次数
  MaxAutoRetriesNextServer: 1 ##切换重试实例个数
zuul:
  host:
    connect-timeout-millis: 20000
    socket-timeout-millis: 20000
    max-per-route-connections: 500
    max-total-connections: 2000
    ##信号量默认100,此处不设置,只要并发达到100就会提示无法获取semaphonre
  semaphore:
    max-semaphores: 2000

2. consumer项目,此项目主要是处理与业务相关的接口,合成接口。所以使用了hystrix,ribbion

###############
feign:
  hystrix:
    enabled: true
  httpclient:
    enabled: true
    max-connetctions: 2000
    max-connections-per-route: 500
  okhttp:
    enabled: false
ribbon:
  ReadTimeout: 15000
  ConnectTimeout: 15000
  MaxAutoRetries: 0
  MaxAutoRetriesNextServer: 1
hystrix:
  threadpool:
    SERVICEMEMBER:
      coreSize: 500
      maximumSize: 1000
  command:
    SERVICEMEMBER: ##自己定义的服务名,单独设置参数
      fallback:
        ### 是否启用降级服务。默认true
        enabled: false

      ## 是否使用断路器来跟踪其健康指标和熔断请求,默认true
      circuitBreaker:
        enabled: true
        ##一个统计窗口内熔断触发的最小个数/10s
        requestVolumeThreshold: 500
        ##熔断多少秒后去尝试请求
        sleepWindowInMilliseconds: 5000
        ###失败率达到多少百分比后熔断
        errorThresholdPercentage: 80
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 20000
          strategy: THREAD
    default: ##默认其他服务使用参数
      fallback:
        ### 是否启用降级服务。默认true
        enabled: false

        ## 是否使用断路器来跟踪其健康指标和熔断请求,默认true
      circuitBreaker:
        enabled: true
        ##一个统计窗口内熔断触发的最小个数/10s
        requestVolumeThreshold: 2000
        ##熔断多少秒后去尝试请求
        sleepWindowInMilliseconds: 5000
        ###失败率达到多少百分比后熔断
        errorThresholdPercentage: 80

      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 20000
          strategy: THREAD

 

以上,记录下来。

 

 

 

 

 

 

公告

喧哗博客--繁华过后的沉寂--技术经验分享^-^
Copyright (c) 2009-2019, b3log.org & hacpai.com