ing
This commit is contained in:
parent
cf37b9d0cb
commit
76ffa421e3
9
connection_pool.go
Normal file
9
connection_pool.go
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
package crawler_manager
|
||||||
|
|
||||||
|
import "google.golang.org/grpc"
|
||||||
|
|
||||||
|
func (c *crawler_manager)GetClient(container string) (*grpc.ClientConn, error) {
|
||||||
|
|
||||||
|
|
||||||
|
return nil, nil
|
||||||
|
}
|
|
@ -6,7 +6,7 @@ import (
|
||||||
"log"
|
"log"
|
||||||
g "loafle.com/overflow/crawler_go/grpc"
|
g "loafle.com/overflow/crawler_go/grpc"
|
||||||
"context"
|
"context"
|
||||||
"loafle.com/overflow/crawler_go/config"
|
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -34,9 +34,38 @@ func CallAdd() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func CallInit(c *config.Config, path string) {
|
func CallInit2(address string, cpm *map[string][]string) bool {
|
||||||
|
conn, err := grpc.Dial(address, grpc.WithInsecure())
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("did not connect: %v", err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
defer conn.Close()
|
||||||
|
|
||||||
port := portMap[c.Crawler.Name]
|
cc := g.NewConfigClient(conn)
|
||||||
|
|
||||||
|
in := &g.Init{}
|
||||||
|
|
||||||
|
in.Path = "/home/snoop/develop/path/go/src/loafle.com/overflow/crawler_go/config/"
|
||||||
|
//in.Name = g.Crawlers(g.Crawlers_value[""])
|
||||||
|
in.Name = g.Crawlers_HEALTH_REDIS
|
||||||
|
|
||||||
|
inArr := &g.InputArray{}
|
||||||
|
inArr.In = append(inArr.In, in)
|
||||||
|
|
||||||
|
outInit, errInit := cc.Init(context.Background(), inArr)
|
||||||
|
if errInit != nil {
|
||||||
|
log.Println(errInit)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
log.Println(outInit)
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func CallInit(crawlerName string, path string) {
|
||||||
|
|
||||||
|
port := portMap[crawlerName]
|
||||||
|
|
||||||
conn, err := grpc.Dial(address+port, grpc.WithInsecure())
|
conn, err := grpc.Dial(address+port, grpc.WithInsecure())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -50,7 +79,7 @@ func CallInit(c *config.Config, path string) {
|
||||||
|
|
||||||
in.Path = filepath.Dir(path)+ "/"
|
in.Path = filepath.Dir(path)+ "/"
|
||||||
|
|
||||||
in.Name = g.Crawlers(g.Crawlers_value[c.Crawler.Name])
|
in.Name = g.Crawlers(g.Crawlers_value[crawlerName])
|
||||||
|
|
||||||
inArr := &g.InputArray{}
|
inArr := &g.InputArray{}
|
||||||
inArr.In = append(inArr.In, in)
|
inArr.In = append(inArr.In, in)
|
||||||
|
|
|
@ -11,19 +11,31 @@ import (
|
||||||
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
address = "localhost:"
|
address = "localhost:"
|
||||||
defaultPort = 50001
|
defaultPort = 80
|
||||||
|
|
||||||
|
rootFolder = "/home/cm/"
|
||||||
|
ConfigFolder = rootFolder + "/config/"
|
||||||
|
BinaryFolder = rootFolder + "/container/"
|
||||||
|
PidFolder = rootFolder + "/pids/"
|
||||||
|
runFile = "tnc"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
type crawler_manager struct {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var currentPort = defaultPort
|
var currentPort = defaultPort
|
||||||
|
|
||||||
var pidMap map[string]int
|
var pidMap map[string]int
|
||||||
|
|
||||||
var exeMap map[string]string
|
var exeMap map[string]string
|
||||||
|
|
||||||
var portMap map[string]string
|
var portMap map[string]string
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -55,7 +67,7 @@ func ReadConfig(path string ) *config.Config {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func ManageCrawler(path string) {
|
func AddConfig(path string) {
|
||||||
|
|
||||||
c := ReadConfig(path)
|
c := ReadConfig(path)
|
||||||
|
|
||||||
|
@ -68,16 +80,125 @@ func ManageCrawler(path string) {
|
||||||
if pid > 0 {
|
if pid > 0 {
|
||||||
b := IsAlive(pid)
|
b := IsAlive(pid)
|
||||||
if b == false {
|
if b == false {
|
||||||
ExeCrawler(c, exePath)
|
ExeCrawler(c.Crawler.Name, exePath)
|
||||||
CallInit(c, path)
|
CallInit(c.Crawler.Name, path)
|
||||||
} else {
|
} else {
|
||||||
CallAdd()
|
CallAdd()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
ExeCrawler(c, exePath)
|
ExeCrawler(c.Crawler.Name, exePath)
|
||||||
CallInit(c, path)
|
CallInit(c.Crawler.Name, path)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func InitContainer() {
|
||||||
|
|
||||||
|
cs := IsStartContainer()
|
||||||
|
|
||||||
|
var cpm map[string][]string = make(map[string][]string)
|
||||||
|
|
||||||
|
var ccl []string
|
||||||
|
for _, c := range cs {
|
||||||
|
ExistConfigFileDir(ConfigFolder, c, &ccl)
|
||||||
|
cpm[c] = ccl
|
||||||
|
RunContainer(&c, &cpm)
|
||||||
|
}
|
||||||
|
|
||||||
|
//startContainer
|
||||||
|
//isPid
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsStartContainer() []string {
|
||||||
|
|
||||||
|
files, _ := ioutil.ReadDir(ConfigFolder)
|
||||||
|
|
||||||
|
var cs []string
|
||||||
|
|
||||||
|
for _,file := range files {
|
||||||
|
|
||||||
|
if file.IsDir() {
|
||||||
|
b := ExistConfigFile(ConfigFolder, file.Name())
|
||||||
|
if b {
|
||||||
|
cs = append(cs, file.Name())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return cs
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExistConfigFile(prePath string,dir string) bool {
|
||||||
|
|
||||||
|
files, _ := ioutil.ReadDir(prePath + "/" +dir)
|
||||||
|
|
||||||
|
for _,file := range files {
|
||||||
|
|
||||||
|
if file.IsDir() {
|
||||||
|
retB := ExistConfigFile(prePath + "/" + dir, file.Name())
|
||||||
|
if retB {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExistConfigFileDir(prePath string,dir string, configCrawler *[]string) {
|
||||||
|
|
||||||
|
files, _ := ioutil.ReadDir(prePath + "/" +dir)
|
||||||
|
|
||||||
|
for _,file := range files {
|
||||||
|
|
||||||
|
if file.IsDir() {
|
||||||
|
ExistConfigFileDir(prePath + "/" + dir, file.Name(), configCrawler)
|
||||||
|
} else {
|
||||||
|
*configCrawler = append(*configCrawler, prePath + "/" +dir)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//func ExistFile(path string) bool {
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
func AddConfig22() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func AddCrawler() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//parameter crawler list
|
||||||
|
func GetCrawlerPort() {
|
||||||
|
//check crawler run
|
||||||
|
|
||||||
|
|
||||||
|
//crawler exe
|
||||||
|
//ExeCrawler()
|
||||||
|
|
||||||
|
//return crawler = port
|
||||||
|
//return portMap
|
||||||
|
}
|
|
@ -10,10 +10,11 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
"strings"
|
"strings"
|
||||||
|
"io/ioutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestManageCrawler(t *testing.T) {
|
func TestManageCrawler(t *testing.T) {
|
||||||
ManageCrawler("/home/snoop/develop/path/go/src/loafle.com/overflow/crawler_manager_go/config/example.json")
|
AddConfig("/home/snoop/develop/path/go/src/loafle.com/overflow/crawler_manager_go/config/example.json")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAdd(t *testing.T) {
|
func TestAdd(t *testing.T) {
|
||||||
|
@ -138,3 +139,76 @@ func TestDir(t *testing.T) {
|
||||||
func TestMyPid(t *testing.T) {
|
func TestMyPid(t *testing.T) {
|
||||||
t.Log(os.Getpid())
|
t.Log(os.Getpid())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func TestDir22(t *testing.T) {
|
||||||
|
|
||||||
|
cs := IsStartContainer()
|
||||||
|
|
||||||
|
t.Log(cs)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCrateDir(t *testing.T) {
|
||||||
|
|
||||||
|
var configPath []string;
|
||||||
|
|
||||||
|
|
||||||
|
configPath = append(configPath, ConfigFolder + "/java/oracle/")
|
||||||
|
|
||||||
|
configPath = append(configPath, ConfigFolder + "/go/test/")
|
||||||
|
|
||||||
|
configPath = append(configPath, ConfigFolder + "/java/mysql/")
|
||||||
|
configPath = append(configPath, ConfigFolder + "/network/http/")
|
||||||
|
configPath = append(configPath, ConfigFolder + "/network/ldap/")
|
||||||
|
configPath = append(configPath, ConfigFolder + "/network/redis/")
|
||||||
|
|
||||||
|
|
||||||
|
var containerPath []string;
|
||||||
|
|
||||||
|
containerPath = append(containerPath, BinaryFolder + "/java/")
|
||||||
|
containerPath = append(containerPath, BinaryFolder + "/go/")
|
||||||
|
containerPath = append(containerPath, BinaryFolder + "/network/")
|
||||||
|
|
||||||
|
containerPath = append(containerPath, PidFolder)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
b, _:=ioutil.ReadFile("/home/snoop/develop/path/go/src/loafle.com/overflow/crawler_go/config/example.json")
|
||||||
|
|
||||||
|
for i, p := range configPath {
|
||||||
|
pp := filepath.Join(p)
|
||||||
|
os.MkdirAll(pp, os.ModePerm)
|
||||||
|
|
||||||
|
if i % 2 == 0 {
|
||||||
|
ioutil.WriteFile(pp + "/id.json", b, os.ModePerm)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, p := range containerPath {
|
||||||
|
pp := filepath.Join(p)
|
||||||
|
os.MkdirAll(pp, os.ModePerm)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestInit(t *testing.T) {
|
||||||
|
InitContainer()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDirs(t *testing.T) {
|
||||||
|
|
||||||
|
cs := IsStartContainer()
|
||||||
|
|
||||||
|
for _, c := range cs {
|
||||||
|
var ccl []string
|
||||||
|
ExistConfigFileDir(ConfigFolder, c, &ccl)
|
||||||
|
t.Log(ccl)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -3,15 +3,50 @@ package crawler_manager
|
||||||
import (
|
import (
|
||||||
|
|
||||||
"log"
|
"log"
|
||||||
"loafle.com/overflow/crawler_go/config"
|
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"time"
|
"time"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
func RunContainer(container *string, cpm *map[string][]string) {
|
||||||
|
cmdStr := getRunCommand(container)
|
||||||
|
|
||||||
|
for {
|
||||||
|
pArg := "-Port=" + strconv.Itoa(currentPort)
|
||||||
|
cmd := exec.Command(cmdStr, pArg)
|
||||||
|
|
||||||
|
err := cmd.Start()
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
time.Sleep(time.Duration( time.Second * 2))
|
||||||
|
|
||||||
|
b := CallInit2("localhost:" + strconv.Itoa(currentPort), cpm)
|
||||||
|
log.Println("current Port:" , currentPort)
|
||||||
|
if b == false {
|
||||||
|
currentPort++
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
log.Println(*container + " run success port:" , currentPort , "pid:", cmd.Process.Pid )
|
||||||
|
currentPort++
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func getRunCommand(container *string ) string {
|
||||||
|
return BinaryFolder + "/" + *container + "/" + runFile
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//FIXME:: process check!!!!!!
|
//FIXME:: process check!!!!!!
|
||||||
func ExeCrawler(c *config.Config, exePath string) {
|
func ExeCrawler(crawlerName string, exePath string) {
|
||||||
log.Println("Run Crawler")
|
log.Println("Run Crawler")
|
||||||
|
|
||||||
for {
|
for {
|
||||||
|
@ -33,7 +68,7 @@ func ExeCrawler(c *config.Config, exePath string) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
portMap[c.Crawler.Name] = strconv.Itoa(currentPort)
|
portMap[crawlerName] = strconv.Itoa(currentPort)
|
||||||
log.Println("current port:", currentPort)
|
log.Println("current port:", currentPort)
|
||||||
//FIXME::remove
|
//FIXME::remove
|
||||||
break
|
break
|
||||||
|
|
Loading…
Reference in New Issue
Block a user