func NewHandlerWrapper(sentinelOpts ...Option) server.HandlerWrapper {
	return func(h server.HandlerFunc) server.HandlerFunc {
		return func(ctx context.Context, req server.Request, rsp interface{}) error {
			opts := evaluateOptions(sentinelOpts)
			resourceName := req.Method()
			if opts.serverResourceExtract != nil {
				resourceName = opts.serverResourceExtract(ctx, req)
			}
			entry, blockErr := sentinel.Entry(
				resourceName,
				sentinel.WithResourceType(base.ResTypeRPC),
				sentinel.WithTrafficType(base.Inbound),
			)
			if blockErr != nil {
				if opts.serverBlockFallback != nil {
					return opts.serverBlockFallback(ctx, req, blockErr)
				}
				return blockErr
			}
			defer entry.Exit()
			err := h(ctx, req, rsp)
			if err != nil {
				sentinel.TraceError(entry, err)
			}
			return err
		}
	}
}
NewHandlerWrapper returns a Handler Wrapper with Alibaba Sentinel breaker
package micro
import (
	"context"
	sentinel "github.com/alibaba/sentinel-golang/api"
	"github.com/alibaba/sentinel-golang/core/base"
	"github.com/micro/go-micro/v2/server"
)