1. 負載均衡
}func main()2.http引數檢查:
第三方validator庫使用
package main
import (
"gopkg.in/go-playground/validator.v9"
"log"
"testing"
)type users struct
func teststruct(t *testing.t)
valid := validator.new()
u := &users
if err != nil
log.printf("驗證成功")
}
import (
"fmt"
"gopkg.in/go-playground/validator.v9"
"reflect"
"regexp"
)func getvalidmsg(obj inte***ce{}, field string)
}func validerrmsg(obj inte***ce{}, err error) error else
} else }}
}return err
}func addregextag(tagname string, pattern string, v*validator.validate) error , false)}
其它的引數驗證和自定義tag例子:
//在gin.context中繫結json c.bindjson(&topic)
type topic struct
type topics struct
//需要定義如下函式處理自定義的tag topicurl
import (
"gopkg.in/go-playgroound/validator.v8"
"reflect"
)//topicurl
func topicurl(v *validator.validate, topstruct reflect.value, //頂層struct
currentstructorfield reflect.value, //巢狀struct中當前struct
field reflect.value, fieldtype reflect.type, fieldkind reflect.kind, param string) bool $`, getvalue); m else
}return false //驗證不通過
}//topics
func topicsvalidate(v *validator.validate, topstruct reflect.value, //頂層struct
currentstructorfield reflect.value, //巢狀struct中當前struct
field reflect.value, fieldtype reflect.type, fieldkind reflect.kind, param string) bool
return false //驗證不通過
}func main()
}
3. go-micro整合其它非go-micro http服務
micro工具啟動register服務
set micro_registry=etcd
set micro_registry_address=127.0.0.1:2379
micro registry
預設監聽8000埠
用http post方式將非go-micro服務註冊進etcd中
}如上就注入進去了,其它服務可以通過 。可以啟動micro提供的api閘道器服務進行服務發現
set micro_registry=etcd
set micro_registry_address=127.0.0.1:2379
set micro_api_namespace=api.jtthink.com #命名空間,和我們註冊如服務時名字前面的匹配
set micro_api_handler=rpc #支援grpc http api,event
micro api
用**封裝一下 服務註冊:
//監聽8088埠
//註冊的服務名稱,名字字首和api閘道器的一樣
svc := sidecar.newservice("api.jtthink.com.test1")
//乙個服務例項
svc.addnode("test-"+uuid.new().string(), 8088, "127.0.0.1")
handler := make(chan error)
go func() ()
go func()
}()go func() ()
geth := <- handler
fmt.println(geth.error())
//反註冊服務
err := sidecar.unregservice(svc)
if err != nil
server.shutdown(context.background())
}註冊**:
}func (this *service)addnode(id string, port int, address string)跑起來之後,go-micro開發的服務就可以和這個服務通過etcd裡面閘道器的名字互相通訊了。
HTTP重定向負載均衡
由於目前現有網路的各個核心部分隨著業務量的提高,訪問量和資料流量的快速增長,其處理能力和計算強度也相應地增大,使得單一的伺服器裝置根本無法承擔。在此情況下,如果扔掉現有裝置去做大量的硬體公升級,這樣將造成現有資源的浪費,而且如果再面臨下一次業務量的提公升時,這又將導致再一次硬體公升級的高額成本投入,...
Nginx實現HTTP負載均衡和TCP負載均衡
以上測試乙個瀏覽器訪問80埠,實現訪問不同的server。stream server 以上可以實現乙個簡單的rtmp流的 nginx 1.9.0 已發布,該版本增加了 stream 模組用於一般的 tcp 和負載均衡,ngx stream core module這個模組在1.90版本後將被啟用。但是...
負載均衡之HTTP重定向
由於目前現有網路的各個核心部分隨著業務量的提高,訪問量和資料流量的快速增長,其處理能力和計算強度也相應地增大,使得單一的伺服器裝置根本無法承擔。在此情況下,如果扔掉現有裝置去做大量的硬體公升級,這樣將造成現有資源的浪費,而且如果再面臨下一次業務量的提公升時,這又將導致再一次硬體公升級的高額成本投入,...