// best() fonksiyonu için kod parçası // backend yoksa hata yönetimi ile
Golang
Çok iş parçacıklı veya asenkron işlemlerle program yazma deneyiminiz var mı?
// TODO backends []*BackendImpl index int mu sync.Mutex func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { b.mu.Lock() index := b.index if b.index + 1 == len(b.backends) { b.index = 0 index = 0 } b.mu.Unlock() resp, err := b.backends[index].Invoke(ctx, req) b.mu.Lock() defer b.mu.Unlock() b.index += 1 return resp, err } // addr ip:port içeren belirli bir örneği tutar func NewBackend(addr string) *BackendImpl // addrs tüm yük dengeleme örneklerinin adreslerini içerir func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImpl, len(addrs)) for _, addr := range addrs { backends = append(backends, NewBackend(addr)) } return &Balancer{ backends: backends, } }
Hangi programlama dilinde çalışıyorsunuz? Sentaks ile neden zorluklar yaşandı?
4 - gelen gelen görevleri hızlıca kabul et, 5 - istekte bulunulduğunda görevin sonucunu döndür 6 - sonuç yoksa, uygun durumu döndür /* İşlemci - uzun ve kaynak yoğun bir işlemi gerçekleştiren bir servis. Zaten uygulanmış durumda Döndürdüğü hatalar tamamen yanlış giriş verileriyle ilgilidir, kararlıdır ve tekrar istemek anlamsızdır */ type Processor interface { Process([]byte) ([]byte, error) } /* Varsayıyoruz ki, benzersiz tanımlayıcılar (örneğin UUID) üreten bir jeneratörümüz var. Jeneratör, çakışma olmayacağını garanti eder */ type ID string // func NewID() ID /* Planlayıcı, müşterilerden görevleri alır, sıraya koyar ve işlemeye başlar. Aynı anda en fazla 'threads' işlem metodunun çalışmasını sağlar Görev durumunu kontrol etme ve sonucu alma imkanı sağlar kendi genel arayüz metodlarını bloklamaz */ type Scheduler struct { processor Processor } func NewScheduler( prc Processor, threads int, ) *Scheduler { // başlangıç mantığı return &Scheduler{ processor: prc, } } func (s *Scheduler) Queue(request []byte) ID { // uygulama return "" }
Bir işvereni seçerken hangi kriterleri kullanacaksınız? Sizin için en önemli nedir?
Mikroservis mimarisi hakkında konuşalım. Son zamanlarda daha fazla olan nedir: destek mi yoksa geliştirme mi?
Gerekirse veya kişisel arzuyla başka bir programlama diline geçmeye istekli misiniz?
Pencerenin tüm gerekli karakterleri içerdiğini nasıl kontrol edilir?
Kamu bulutları kullandınız mı? Evetse, hangi sağlayıcılar ve hizmetler?
Son projeleriniz ve kullanılan teknolojik yığın hakkında bize bilgi verin.
Sonuçta ne oluyor anlat — nasıl tampon biriktiriyoruz?
[şehir]de şu anda ikamet ettiğiniz ve ofise çıkışlarla hibrit formatta çalışmanın sizin için uygun olacağı doğru mu?
Bir örnek düşünelim: first=[1,1,2], second=[1,2]. Algoritmanız ne döndürmeli ve çoğaltıcılarla doğru çalışıyor mu?
Hangi maaş beklentileriniz var?
Process metodlarının aynı anda 'threads' sayısından fazla çalışmaması için goroutine sayısını nasıl sınırlandırırsınız? Kanalden görevleri kim alacak?
// best() fonksiyonu için kod parçası // backend yoksa hata yönetimi ile
En yüksek yükteki hizmetin işlediği maksimum istek sayısı nedir? Doğru mu ki bu 5–8 bin istek/saniye civarında?
// best() fonksiyonu için kod parçası // backend yoksa hata yönetimi ile
Mikroservis mimarisiyle ilgili hangi anti-deseni biliyorsunuz?