upstream流程测通

This commit is contained in:
Liujian
2021-07-21 15:06:24 +08:00
parent 5ea1cfb755
commit 62802c5a92
11 changed files with 243 additions and 140 deletions

View File

@@ -4,7 +4,6 @@ import (
"errors"
"fmt"
"net/http"
"reflect"
"github.com/eolinker/goku-eosc/upstream"
@@ -31,7 +30,7 @@ type httpUpstream struct {
scheme string
balanceType string
app discovery.IApp
balanceHandler balance.IBalanceHandler
balanceFactory balance.IBalanceFactory
}
func (h *httpUpstream) Id() string {
@@ -39,11 +38,6 @@ func (h *httpUpstream) Id() string {
}
func (h *httpUpstream) Start() error {
handler, err := balance.GetDriver(h.balanceType, h.app)
if err != nil {
return err
}
h.balanceHandler = handler
return nil
}
@@ -63,11 +57,14 @@ func (h *httpUpstream) Reset(conf interface{}, workers map[eosc.RequireId]interf
h.scheme = cfg.Scheme
h.balanceType = cfg.Type
h.app = app
handler, err := balance.GetDriver(h.balanceType, h.app)
if err != nil {
return err
}
h.balanceFactory, err = balance.GetFactory(h.balanceType)
if err != nil {
return err
}
h.balanceHandler = handler
return nil
}
}
@@ -85,15 +82,19 @@ func (h *httpUpstream) CheckSkill(skill string) bool {
//send 请求发送,忽略重试
func (h *httpUpstream) Send(ctx *http_context.Context, serviceDetail service.IServiceDetail) (*http.Response, error) {
handler, err := h.balanceFactory.Create(h.app)
if err != nil {
return nil, err
}
var response *http.Response
var err error
path := utils.TrimPrefixAll(ctx.ProxyRequest.TargetURL(), "/")
node, err := h.balanceHandler.Next()
node, err := handler.Next()
if err != nil {
return nil, err
}
for doTrice := serviceDetail.Retry() + 1; doTrice > 0; doTrice-- {
fmt.Println("addr is:", node.Addr())
u := fmt.Sprintf("%s://%s/%s", h.scheme, node.Addr(), path)
response, err = http_proxy.DoRequest(ctx, u, serviceDetail.Timeout())
@@ -102,7 +103,7 @@ func (h *httpUpstream) Send(ctx *http_context.Context, serviceDetail service.ISe
node.Down()
}
h.app.NodeError(node.Id())
node, err = h.balanceHandler.Next()
node, err = handler.Next()
if err != nil {
return nil, err
}
@@ -114,7 +115,3 @@ func (h *httpUpstream) Send(ctx *http_context.Context, serviceDetail service.ISe
return response, err
}
func GetType() reflect.Type {
return reflect.TypeOf((*httpUpstream)(nil))
}