22,224 საკითხავი
22,224 საკითხავი

How We Built a სწრაფი, ხელმისაწვდომი Reverse Geocoding სისტემა ჩვენი iOS app

მიერ Alexander Kolobov11m2025/05/29
Read on Terminal Reader

Ძალიან გრძელი; Წაკითხვა

გაიგეთ, თუ როგორ შეიმუშავეთ საბაჟო Reverse Geocoding API- ს geospatial მონაცემების დამუშავებისთვის, რათა გაუმჯობესოს სიჩქარე, სიზუსტე და გაფართოება ჩვენი iOS app- ს, AWAY
featured image - How We Built a სწრაფი, ხელმისაწვდომი Reverse Geocoding სისტემა ჩვენი iOS app
Alexander Kolobov HackerNoon profile picture
0-item
1-item

პროგრამული უზრუნველყოფის განვითარებაში ხშირად შეესაბამება ინტენსიური ცვლილებები, განსაკუთრებით, როდესაც ოპერაცია მჭიდრო რესურსების შეზღუდვა და ცდილობენ შეამციროს ღირებულებები, სანამ MVP აჩვენებს მისი ღირებულება. ამ შემთხვევაში, აირჩიოს ალგორტატები და მიმოხილვა ხდება მნიშვნელოვანია. მე შეიტანოთ ერთ-ერთი ასეთი ცვლილება, რომელიც დაკავშირებულია მუშაობის geospatial მონაცემები.

Reverse Geocoding განთავსება

2019 წლის ბოლოს, მე და რამდენიმე მეგობრები მუშაობთ, რათა განვითარდეს პატარა iOS პროგრამა, რომელიც გამოიყენებაAWAYპროგრამა საშუალებას გაძლევთ მომხმარებელს შეინარჩუნოთ სია, რომელიც მათ ეწვევა და გაუზიაროს მას სხვათან. მისი ძირითადი კონცეფცია არის, რომ მომხმარებელს არ უნდა manually შეინახოთ ქვეყნებს, რომლებიც მათ ეწვევა.

App screens: countries list, map, sharing

აქ არის, როგორ მუშაობს: თუ თქვენი ტელეფონი შეიცავს ფოტოები, პროგრამა, როდესაც მოითხოვს და მიიღებს ხელმისაწვდომობა მედია ბიბლიოთეკაში, შეუძლია წაიკითხოთ სიგრძე და სიგრძე, სადაც თითოეული სურათი მიიღა EXIF მეტატონები. მას შემდეგ, რაც აირჩიებს, რა ქვეყანა ეს კონდიციონები მოიცავს, და ამ ქვეყანა დაამატა თქვენი სიაში ეწვეული ადგილებში.

ეს პროცესი მისაღებად მისამართი (და ამ შემთხვევაში, ქვეყანა სახელი) geographic კონდიციენტები არის ცნობილიreverse geocodingამ პროცესის კონფიგურაცია — გრაფიკული კონდიციენტების მიღება ტექსტალური მისამართით — ცნობილია, როგორც forward geocoding.

Third-Party გადაწყვეტილებები

ჩვენი MVP- ის განვითარებაში, ჩვენ დაიწყოთ ყველაზე მარტივი ხელმისაწვდომი და გამოიყენებული ვარიანტი.Apple-ის default გადაწყვეტილებებიპროგრამა მუშაობდა, ქვეყნებს ავტომატურად დაამატა სიაში, და ჩვენ დაიწყოთ ჩვენი პირველი მომხმარებელს.

Apple- ის გადაწყვეტილება ძალიან მგრძნობიარე იყო, რადგან მისი API-ის ქსელის მოთხოვნებს შეზღუდული ხარისხის შეზღუდვა, და ეს არ იყო განკუთვნილია ქსელის ქსელის დამუშავებისთვის. მას შემდეგ, რაც მომხმარებლის მედიის ბიბლიოთეკები ხშირად შეიცავს ათასობით ფოტოები, ქვეყნების აღდგენის პროცესი ძალიან ხანგრძლივი იყო, ზოგჯერ იღებს მეტი 30 წუთის განმავლობაში.

ასეთი ხანგრძლივი დატვირთვის დრო inevitably undermined our app’s virality. instead of immediately receiving a list of visited countries and sharing it on Instagram or Facebook, მომხმარებლები უბრალოდ დატვირთვა გარეშე დასრულების პროცესი.

ჩვენ არ შეგვიძლია იპოვოთ უფრო განკუთვნილია მესამე პარტიის გადაწყვეტილებები.Google-ისდაMAPBOX, და სხვა მსგავსი API-ები ან აქვს იგივე პრობლემები, რაც Apple - არ არის შესაფერისი ბარიკული დამუშავებისთვის და არ გთავაზობთ დროის შეუზღუდავი უპირატესობა - ან იქნება უპირატესობად ძვირადღირებული, იმიტომ, რომ მოცულობა координатები ჩვენ უნდა გააკეთოთ. ბევრი შემთხვევაში, ეს იყო ორივე.ნიმუშიეს იქნება ძალიან ღირებულება, რადგან ხელმისაწვდომი სერვერის გაქირავება.

არ არის ხელმისაწვდომი off-the-shelf ვარიანტი ხელმისაწვდომი, მე, როგორც პასუხისმგებელი backend, დაიწყო შექმნას ჩვენი საკუთარი API.

GeoJSON

ამ პროექტის წინ, მე არ იყო გამოცდილება მუშაობის geospatial მონაცემები, ასე რომ მე უნდა გაიგოთ ყველაფერი, როგორც ჩვენ განვითარებული პროგრამა.

პირველი რამ, რაც მივიღე განახლებისთვის, იყო ინფორმაცია ქვეყნებში, რათა შეესაბამება კონდიტორები. ფართოდ გამოიყენება ფორმატი geographic მონაცემთა სტრუქტურების შენახვისთვის არისGeoJSON.

GeoJSON არის სტანდარტული JSON ფაილი სპეციფიკური სტრუქტურა, რომელიც საშუალებას გაძლევთ შეტყობინოს პუნქტები, ხაზები, და ფორმები უარყოფითი ფართობი.

მაგალითად, ვფიქრობ, რომ ჩვენ გსურთ შეინახოთ ინფორმაცია იტალიის სფეროში. ამისთვის, ჩვენ გამოიყენებთ სპეციალური ობიექტს, რომელიც გამოიყენებაFeatureგერმანიის სფეროებში შეიცვალა aMultiPolygonყველა polygon შედგება ერთი ან მრავალფეროვანი პარამეტრების პარამეტრები, სადაც პირველი და ბოლო პარამეტრები[lon, lat]დასაწყისში აღწერილი ფორმები დაამატოთ საერთო geographical zone, ამ შემთხვევაში, იტალიაში, ერთად კუნძული Sardinia (კუნძული იქნება აღწერილი განსხვავებული polygon). კუნძულები ამ array უნდა დააყენოთ counterclock direction.

რა თქმა უნდა, იმ შემთხვევაში, თუ გულისხმობთ, რომ თქვენ არ განიხილავთ, რა თქმა უნდა, თქვენ არ განიხილავთ, თუ რა თქმა უნდა, თქვენ არ განიხილებთ, თუ რა თქმა უნდა, თქვენ არ განიხილავთ.

Metadata, როგორიცაა ქვეყანა სახელი, შეიძლება შეიცავდეს ინტეგრირებულიpropertiesObject არ არის.


{
  "type": "FeatureCollection",
  "features": [
    {
	  "type": "Feature",
	  "geometry": {
	    "type": "MultiPolygon", 
		"coordinates": [
		  [ // Polygon
		    // Exterior ring, Italy
		    [ [20, 35],[10, 30],[10, 10], ... ,[45, 20],[20, 35]],
		    // Interior "excluding" ring, San-Marino
		    [ [30, 20],[20, 15],[20, 25], ... ,[30, 20]]
		  ],
		  [ // Polygon
		    // Exterior ring, Sardinia
		    [ [40, 40],[20, 45], [45, 30], ... ,[40, 40]]
		  ] 
		]
	  },
      "properties": {
        "country": "Italy",
      }
    }
  ]
}

Geodata შექმნა

გლობალური რუკა შექმნა, მე უნდა წყარო ყველაზე სიზუსტით GeoJSON ფაილები კოდიდიტატები ყველა ეროვნული შეზღუდვა, რომელიც გამოჩნდება, რომ შეუზღუდავი მოთხოვნები.

მე დამოკიდებულია სხვადასხვა Open Sources, მათ შორის შეერთებული მონაცემებიOceanographic ინსტიტუტებიდაპაკეტები from npmjs.org, და Open Geographic მონაცემებინიმუში, მათ შორის. საერთო პრობლემა ყველა მონაცემებით, რომელიც მივიღე, იყო მისი ხარისხი. ზოგჯერ, სფეროები შეესაბამება, განსაკუთრებით რეგიონების შორის პოლიტიკური გაცნობის შემთხვევაში. სხვა შემთხვევაში, მხოლოდ მონაცემები, რომლებიც მოიცავს სფეროული წყლები ხელმისაწვდომია, რომელიც არ შეესაბამება ჩვენი საჭიროებებს. მივიღე ამ წყალებს შეუზღუდაოს საჰაერო რუკა ქვეყანა სფეროებში (დაწვრილებით, მადლობა, რომFlanders Marine ინსტიტუტიზოგიერთი დროს, რეზოლუცია (კონტაქტების რაოდენობა) იყო ძალიან დაბალი საიმედო geocoding, რაც მოითხოვს, რომ შეამოწმეთ ალტერნატივა.

განაცხადის მოთხოვნები იყო საკმაოდ მოთხოვნილებები: ჩვენ გვჭირდება ზუსტი, არ გადაიხადოს ზომები თითოეული გრაფიკული ტერიტორიაზე მაღალი რეზოლუციით გარეშე რეგიონული წყაროები (და აჩვენება in-app რუკა), და დაბალი რეზოლუციით ზომები, მათ შორის რეგიონული წყაროები (ჩქარით და უფრო ეფექტური geocoding, განსაკუთრებით სურათების საღებავი საღებავი ქარხანა მდებარეობა - პრობლემა, რომ ჩვენ აღმოაჩინეს, როდესაც მუშაობა საწყისი გადაწყვეტილებები).

დაახლოებით ერთი კვირის განმავლობაში, მე შეუწყე, რომ შექმნათ ორი მაღალი სიზუსტით GeoJSON ფაილი.countries_maritime.jsonყველა ქვეყნებში, მათ შორის მათი სართული წყლები, ხოლო სხვა,countries_coastline.jsonთითოეული ფაილის ზომა რამდენიმე ათასობით მგაბუტი, და ბოლოს, მე გრძნობს, როგორც მე პირდაპირი მოგზაურობა ყველა კუთხე მსოფლიოში.

ამინდი

როდესაც დაწყებული, განახლებული ვერსია პროგრამა მოკლე ყველა წინასწარ არ დამუშავებული ფოტო კონდიციენტები მომხმარებლის მედიის ბიბლიოთეკაში 10 000 ბარიშებში და გაგზავნა მათ ჩემი backend- ში მრავალჯერადი მოთხოვნა.

Node.js- ში და AWS- ში დამზადებული მხარდაჭერა დააყენაcountries_maritime.jsonდასაწყისში დასაწყისში, როდესაც მოთხოვნა შევიდა კონდიციონერების კომპლექტი, იგი გამოიყენაPolygon-ის მიმოხილვაბიბლიოთეკა, რათა შეესაბამება კონდიციონები დაკავშირებული რეგიონებში ფაილი, რომელიც შეიცავს 250 ქვეყნებში.

კონფერენციების სია სქესობრივი კონფერენციების მიერ შეამოწმოდა, რადგან, როგორც ჩანს, ზოგიერთი კონფერენციების გარშემო არ არის მოითხოვებული. ჩვენ ასევე შეარჩიეთ კონფერენციები, რომელთა სიმაღლე 8.850 მეტრიზე მეტია (მათოდ უმაღლესია, ვიდრე Everest- ის ზედაპირზე), რათა თავიდან ავიცილოთ ჩაწეროს პოპულარული Instagram-ის სტილის ფოტოები თვითმფრინავების კუნძულები (სავარაუდოდ თვითმფრინავები უმაღლესია, ვიდრე 9.000 მეტრი).

მას შემდეგ, რაც შეხვდა კონტაქტი, ქვეყანა აჩვენებს, რომpropertyმას შემდეგ, რაც ყველა კონდიციონენტების დამუშავება, რეგისტრირებული identifier სია deduplicated, დაამატა მომხმარებლის სიაში ეწვეული ქვეყნებში, და დაბრუნდა კლიენტს სინქრონიზოს პროგრამა backend database.

მას შემდეგ, რაც გადაიხადეთ ჩვენი საბაჟო გადაწყვეტილებები, ზემოთდამუშავების სიჩქარე 10,000 კონდიციენტები წამში(სინთეტიკური ტესტები), მედიანი დრო, რომ დამუშავება მომხმარებლის მედიის ბიბლიოთეკა შემცირდა 20-25 წამში (მომხმარებლის რეგისტრაციის შემდეგ, რომ მოგცემთ სიაში ეწვეული ქვეყნებში), დასაშუალო ქვეყანა ზრდა 225% მომხმარებლისთვისიმიტომ, რომ უფრო ზუსტი geocoding.

Geodata ადმინისტრაცია

მას შემდეგ, რაც პროგრამა გაგრძელდა, მომხმარებლები დაიწყო ფუნქციონალური მოთხოვნებს გადაცემთ. ერთ-ერთი ყველაზე ხშირად მოთხოვნები იყო ავტომატური აღიარება რეგიონებში და ძირითადი ქალაქებში თითოეული ქვეყნებში.

ეს იყო მნიშვნელოვანი ცოდნა. მაღალი ხარისხის მონაცემების მოცულობა 250 ქვეყნებში დაახლოებით 250 ქვეყნებში უკვე ძალიან რთული იყო. მსგავსი მონაცემების მოცულობა ათასობით რეგიონებში და ქალაქებში კიდევ უფრო რთული იყო.

ამ მიზნით, მე გადაიხადე რეგიონებს JSON ფაილში Postgres ტაბლეში და განვითარდა ადმინისტრაციული ინტერფეისი გეოგრაფიული ზონების მართვისთვის. გარდა ამისა, მე ინტეგრირებული admin პანელი რამდენიმე გარე API- ს ერთად, რათა ავტომატურად შექმნათ სიაები რეგიონებში და ქალაქებში მათი საავტომობილო ქვეყნებში.

Country administration interface

პირველი პრობლემა, რომელიც მე შეხვდა, იყო გრაფიკული რეგიონული მონაცემების ინდივიდუალური მოპოვება. არ არსებობს საერთოდ ნათელი განსხვავება რეგიონების და ქალაქების შორის, და სხვადასხვა ქვეყნებში განსხვავებული დონეები ადმინისტრაციული დონეები არიან. სწორი დონეების გაზომვა საჭიროა კომპლექსური კითხვები შექმნასდასაწყისში, გამოყენებით პირობები და recursive calls, რათა ფილტრიროთ ადმინისტრაციული ცენტრი, პოპულარული ზომა, და შიდა ურთიერთობები. ეს ასევე მოიცავს შეამოწმოთ, თუ როგორ გაზიაროთ და დაჯავშნა გრაფიკული ღონისძიებები, მათი ურთიერთობები, და შეშფოთებული სტრუქტურები, და შეცვალოს ზოგიერთი შეცდომა მონაცემები.

მეორე განიხილება გამოჩნდა, როდესაც მუშაობა კონდიციონერი წყაროები რეგიონული შეზღუდვა. მას შემდეგ, რაც ჩამოტვირთვა სიაები osmId რეგიონებში და ქალაქებში, მე უნდა გაიგოთ geometry მათი შეზღუდვა. მას შემდეგ, რაც ფართო კვლევა, მე დააყენა გამოყენებითმთავარი / openstreetmap.orgდა თითქმის მთლიანად შეუზღუდავიპლატფორმა: openstreetmap.frეს წყაროები არ იყო სრული, ასე რომ მე უნდა გაგზავნოთ მრავალჯერადი მოთხოვნები და შედარებით მათი შედეგები, აირჩიოს საუკეთესო შეესაბამება ძირითადად ხარისხის გადაიხადული მონაცემები.

მასშტაბით, რომ არ არსებობს დოკუმენტაცია, კომპლექსური მონაცემთა ურთიერთობები და წყაროების შეუზღუდავიობა, მე შეგვიძლია შექმნათ სტაბილური გადაწყვეტილება. admin პანელი ინტერფეისი ახლა საშუალებას გაძლევთ ავტომატური დატვირთვა ქალაქების და რეგიონების სიაები ნებისმიერ ქვეყნებში მხოლოდ რამდენიმე კლიკებით, მათ შორის მათი მეტატონები და საუკეთესო ხელმისაწვდომი სფეროში geometries. მონაცემები შემდეგ შენახავს მონაცემებს მონაცემთა ბაზარზე, სადაც მას შეუძლია შემდგომი გაფართოება მომხმარებლის ხელმისაწვდომობის, caching, და შეავსება geocoding ინდუსტრიაში.

GeoJSON- ის მონაცემების ჩვეულებრივი პრობლემების გადახდისთვის, მე ასევე შეიმუშეს ინტეგრირებული რედაქტორი, რომელიც საშუალებას გაძლევთ გაზიაროთ, შეესაბამება, გადაიხადოს და წაიკითხოთ დაკარგული საბოლოო geometries.

GeoJSON file editing interface

ყველა ეს ინსტრუმენტები საშუალებას გაძლევთ, ერთად გუნდი მხოლოდ ორი ადამიანი, შექმნათ მონაცემთა ბაზა რეგიონები და ქალაქები, რომ ჩვენ ფანტასტიკურად გთავაზობთ მომხმარებელს თვე და თვეში.

ამჟამად, პროგრამა მხარს უჭერს 3,134 რეგიონებს და 28,083 ქალაქებს, თითოეული ზუსტი შეზღუდვა, და შეამოწმოთ მომხმარებლის რაოდენობა, რომელიც იხილავს მათ.

Geodata შეზღუდვა

Node.js- ის გამოყენებით 31,467 რეგიონების მართვა შეუზღუდავი იყო შესრულების და რესურსების შეზღუდვის გამო. ჩემი პირველი იდეა ამ პრობლემას შეუზღუდავი იყო GeoJSON- ის მონაცემების ზომის შეზღუდვა, ხოლო ნებისმიერი ვიზუალური შეზღუდვა მინიმუმ.

როგორც ვთქვა ადრე, მონაცემები, რომლებიც საჭიროა app display და geocoding ძალიან განსხვავებული მოთხოვნები: მიუხედავად იმისა, რომ მომზადება რუკები ბეჭდვა app შეუძლიათ გაგრძელდეს წუთი, geocoding ძალიან სქესობრივი მონაცემთა მოცულობა, მისი სიჩქარე პირდაპირი დაკავშირებული რაოდენობით კოდიდიტები სფეროში.

მე ექსპერიმენტი რამდენიმე ალგორტატები, რათა შეუზღუდავი coordinate chains polygons.

პირველი მიმოხილვა იყოRamer–Douglas–პუკერიმისი მიმოხილვა არ არის სტაბილური, რაც იწვევს განსხვავებები სხვადასხვა GeoJSON ფაილი შორის, და ეს ასევე იწვევს მცირე დეტალების დაკარგვა, როგორიცაა კუნძულები.

საბოლოომე ვფიქრობ, რომ ჩემი საკუთარი განხორციელება(დაწვრილებული როგორც npm პაკეტი) დაფუძნებულირა თქმა უნდაGeoJSON- ის მუშაობისათვის განკუთვნილია ალგორტიზმი. ამ ალგორტიზმიის გაკეთება მხოლოდ GeoJSON- ის სტრუქტურის კონკრეტული ნაწილებს შეუძლიათ გამოიყენოთ, რაც შედეგების სტაბილურობის პრობლემას გადაიხადოს, მაგრამ ჯერ კიდევ ხელს უწყობს შეზღუდვები და მცირე დეტალების დაკარგვა. ჩემი მიმოხილვა GeoJSON- ის კომპონენტებს შეხვდა, მათ ერთ წუთში შეერთდა.Heap(სამთავრობით, რომ ხაზს შორის სამი მშრალი კონდიციენტები, როგორც ქსოვილის ელემენტს), და დამუშავებული იგი როგორც ერთი კრუს ერთად დამატებითი ლოგიკური საერთო ტკივილი შენარჩუნება. მე შემდეგ reconstructed იგი საბოლოო објект. ეს საშუალებას გაძლევთ უფრო იმიტომ, რომ უფრო იმიტომ, რომ შეამციროს ტკივილი და თავიდან ავიცილოთ დაკარგვა მნიშვნელოვანი დეტალები.

მე ვფიქრობ, რომ ჩემი საკუთარი განხორციელება

გარდა ამისა, რომ მონაცემთა მოცულობა შეამციროს, ამ GeoJSON ფაილი გადარჩენა დაეხმარა აჩვენოს მრავალფეროვანი შეცდომები და კონკურენტები მონაცემებში:

  • არ დახურული კონდიციონერი Array.
  • კონფლიქტირებული შეზღუდვა არასწორი კონფლიქტირებული შედუღების გამო.
  • ფოლადის კოდედეტური არეები.
  • უამრავი ნედლევა .
  • არ არის საჭირო სიზუსტით კონდიტორები.

მე წარმატებით ავტომატიზაცია და შეცვლა ამ შეცდომები, ნაწილიში გამოყენებით არსებობს ინსტრუმენტები, როგორიცაა:Polygon კლიპებიდამთავარი / Geojsonhintდა@MAPBOX / geojson-rewindდადა @mapbox/geojson-extentეს მოიცავს სხვადასხვა polygons შეესაბამება multipolygons და geometry კოლექციები, შეამციროს coordinate რეზოლუცია მოითხოვებული დონეზე, შეცვალოს coordinate გზა, და გააუმჯობესოს ღონისძიებები.

შედეგად, მე მივიღე მნიშვნელოვანი გაუმჯობესება შესრულება geodata დამუშავება. გარდა ამისა, სტაბილურობა ჩემი ალგორტიმი გადაიხადოს პრობლემა ცუდი შეესაბამება მარტივი გარიგებები შორის გარშემო რეგიონებში რუკა.

Go Microservices

მიუხედავად იმისა, რომ კომპიუტერული სატვირთო შეამციროს geodata ადვილად, გახდა ნათელი, რომ Node.js ყოველთვის არ არის იდეალური გადაწყვეტილება ჩვენი საჭიროებებს. მე ვფიქრობ, რომ გამოყენებაპოსტიმას შემდეგ, რაც ფართო კვლევა, მათ შორის ეფექტურობის და რესურსების მოხმარების შეზღუდვა, მე აირჩიე მეორე - მარტივი microservice შექმნილია Go.

Microservice არქიტექტურა განკუთვნილია მაქსიმალური სიჩქარით დამუშავების კოდიდენტები, ხოლო მინიმუმზაცია არჩეული ოპერაციები.

მას შემდეგ, რაც მისი პირველი გაშვება, microservice კავშირებს PostgreSQL და მიიღებს ყველა დაკავშირებული GeoJSON მონაცემები ბარიშებში 100 სფეროებში. ეს მონაცემები შეხვდება სტრუქტურები, თითოეული შეიცავს polygon და corresponding territory identifier. ეს სტრუქტურები შემდეგ cache into gob ფაილი, რათა შეინარჩუნოთ დრო შემდეგი reboot microservice.

მას შემდეგ, რაც სტრუქტურა შექმნილია, ერთიR-მომცველიამ ტიპის ფურცელი ხშირად გამოიყენება, რათა შექმნათ კვლევის ინდუსტრიები მრავალდოვანი მონაცემები, როგორიცაა polygons. ფურცელი საშუალებას იძლევა ლოგარტიული დროის კვლევა მცირე შეზღუდული ქსელის, რომელიც მოიცავს მიზანი polygon.

მას შემდეგ, რაც ხის შექმნილია, microservice შევიდა მოუსმინოს სტრატეგიის, დაველოდოთ მოცემულ მოთხოვნებს.

როდესაც მოთხოვნა მივიღება, რომელიც შედგება კონდიციონერი კაბელები[lat, lon]მრავალფეროვანი დამუშავება იწყება. შედეგად არის უნიკალური რეგიონული აღწერა, რომელიც შეიცავს უზრუნველყოს კონდიციენტები.

ყველა კოდიდიტის პირველი ეძებს R-ბის მეშვეობით. ეს ეძებს შეიძლება გადაიხადოს პლატფორმა, რომელიც შეიცავს პლატფორმა, რომელიც პოტენციურად მოიცავს კოდიდიდიტი. იმისათვის, რომ შეამოწმოთ, თუ კოდიდიდიტი ნამდვილად მდებარეობს პლატფორმაში,Ray-Casting ალგორტიზმიამ ალგორტიმი ფუნქციონირებს ხაზოვანი დროში, რაც პროცესის ყველაზე resource-intensive ნაწილს. თუმცა, სანამ გაკეთება ray-casting კონცენტრაცია, მე შეამოწმეთ, თუ territory identifier polygon უკვე აღმოჩნდა, როდესაც დამუშავება სხვა კონცენტრატები მოთხოვნა. თუ ეს არის, ray-casting კონცენტრაცია გამოჩნდა, მნიშვნელოვანია შეამციროს მომსახურების დამუშავების დრო.

მას შემდეგ, რაც ყველა სინათლის მუშაობა დასრულდა, identifier- ის კომპლექტი გადაიხადოს Node.js layer- ში. ქვემოთ, მე შეამოწმოთ არქიტექტურა შემდეგი დიაგრამით:

Go Microservice Diagram

ყველა კვლევის პროცესი, გარდა ამისა, რომ სპეციფიკური ოპტიმიზაცია შეშფოთება რედაქტირებული ray-casting კონცენტრაცია, უჭერს, თუ როგორ PostGIS შეესაბამება მსგავსი სამუშაო გამოყენებით.გარიგებაინდივიდუალური

API- ს გამოყენებით Go microservice- ის გარშემო შეიქმნა,ჩვენ შეგვიძლია გადამუშავოთ დაახლოებით 100,000 კონდიციონერი კაბელები წამში.შედარებით, წინასწარ Node.js გადაწყვეტილებები გაქირავებული დაახლოებით 10,000 კონდიციონერი პარკები 250 ზონებში, მათ შორის ქსელის მოთხოვნების და backend ოპერაციების overhead.

ეს მნიშვნელოვანი გაუმჯობესება დამუშავების სიჩქარით საშუალებას გაძლევთ უფრო სწრაფად შეიმუშავოს მომხმარებელს ეწვეული ქვეყნების სია. გარდა ამისა, მხარდაჭერით რეგიონების და ქალაქების აღიარებას,ამ app- ში 160% ზრდის აქტიური მომხმარებლები და 107% ზრდის მომხმარებლის გაზიარება.მათი შედეგები

ეს გადაწყვეტა დღეს გამოიყენება და გაგრძელებს გაუმჯობესებული მოთხოვნების მოცულობის და გეოგრაფიული ზონების ეფექტურობის გაუმჯობესებას. მნიშვნელოვანია, რომ მთელი backend მუშაობს ნაკლებად, ვიდრე gigabytes RAM- ს, რომელიც აჩვენებს მისი ოპტიმიზებული რესურსების გამოყენებას.

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks